Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dani_07

Programa em C

Recommended Posts

Bom pessoal, estou com um trabalho importantíssimo pra fazer e não consigo, preciso da ajuda de vocês. o programa é em C.

o professor disse que precisa usar variável extern e static e ponteiro......

o problema é o seguinte:

Considere as seguintes formulas de recorrencias:

F1 = 2;

F2 = 1;

para i >=3:

Fi = 2 * Fi-1 + Gi-2

G1 = 1;

G2 = 2;

para i >=3:

Gi = Gi-1 + 3 * Fi-2

 

Podemos entao montar a seguinte tabela:

i Fi Gi

1 2 1

2 1 2

3 3 8

4 8 11

5 24 20

... ... ...

Faca uma funcao de nome valor que recebe um inteiro i >1 e devolve Fi e Gi.

Por exemplo: para i=2, a funcao deve devolver os valores 1 e 2; para i=3, a funcao

deve devolver os valores 3 e 8; para i=4, a funcao deve devolver os valores 8 e 11.

Faca um programa que receba, via argumentos da funcao main, um inteiro 1 < n ≤ 20 e

imprime a uma tabela com os valores Fi e Gi com i variando de 1 a n.

Seu programa deve obrigatoriamente utilizar a funcao valor.

 

 

Me ajudemmmmm!!!!!

valeuuuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que ajudamos..

comece e conforme for surgindo as dúvidas vá postando..

pq com ctz se esta buscando algo pronto, não tera ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que ajudamos..

comece e conforme for surgindo as dúvidas vá postando..

pq com ctz se esta buscando algo pronto, não tera ;D

 

[]s

 

tentei fazer de dois jeitos, um sem vetor e outro com vetor, mas nenhum dá certo, o sem vetor imprime errado os valores e com vetor, nao imprime nada, só complica.

#include <stdio.h>
#include <stdlib.h>

int valor1(int,int *,int *);


int main(int argc, char *argv[]){
    if(argc == 2){
    int n,i,*f,*g;
    n = atoi (argv[1]);
   
    if (n<=20){
          printf("i\t\tfi\t\tgi\n");
          for(i=1;i<=n;i++){
          printf("%d\t", i);
          printf("\t%d\t%d\n",valor(i,&f,&g));
           
          }
          }
          system("pause");
          return 0;
          
   }else{
           
     printf("Erro!\nUso: %s num1\n", argv[0]);
}
        system("pause"); 
        return 1;       
        }

int valor(int x,int *f, int *g){
int fprox,fant = 1,gprox,gant = 2, contador = 3;

int f1 = 2;
int f2 = 1;
int g1 = 1;
int g2 = 2;

    if(x==1){ 
    *f = f1;
    *g = g1;
}
    if(x==2){
    *f = f2;
    *g = g2;
}   if(x>=3){
    
             
       fprox = *f + fant;
       fant = fant + 1;
          
       gprox = *g + fant;
       gant = gant + *g;
      
            
       *f = 2 * fprox - 1 + *g - 2;
       *g = gprox - 1 + 3 * *f - 2;
}

return *f,*g;

system("pause");

}
[code]

[code]
#include <stdio.h>
#include <stdlib.h>


int valor(int,int *);

int main(int argc, char *argv[]){
    if(argc == 2){
    int n,i,*f[i],*g[i];
    n = atoi (argv[1]);
    if (n<=20){
          printf("i\t\tfi\t\tgi\n");
          for(i=1;i<=n;i++){
          printf("%d\t", i);
          printf("\t%d\t",valor(i,&f[i]));
          printf("\t%d\n",valor1(i,&g[i])); 
          }
          }
          system("pause");
          return 0;
          
   }else{
           
     printf("Erro!\nUso: %s num1\n", argv[0]);
}
        system("pause"); 
        return 1;       
        }
int valor(int x,int *f[x]){

x++;
    if(x==1){ 
    *f[x] = f[1] = 2;
}
    if(x==2){
    *f[x] = f[2] = 1;
}   
    if(x>=3){
           extern int *g[x];             
      *f[x]  = 2 * f[x -1] + g[x-2];
    
}


system("pause");
}
[/code]

[code]
e a externa dele:

#include <stdio.h>
#include <stdlib.h>

int valor1(int *[]);

int main(){
    
 valor1();
 printf("%d\n",&g[x]);
}

int valor1(int *g[x]){
extern int x, *f[x]);

x++;

 
    if(x==1){ 
    *g[x] = *g[1] = 1;
}
    if(x==2){
    *g[2] = 2;
}  
    if(x>=3){
             
    *g[x] = *g[x-1] + 3 * *f[x-2];
          }
    
return *g[x];

system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.