dani_07 0 Denunciar post Postado Setembro 19, 2010 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
quitZAUMMM 18 Denunciar post Postado Setembro 20, 2010 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
dani_07 0 Denunciar post Postado Setembro 20, 2010 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