Briooosa 0 Denunciar post Postado Dezembro 12, 2006 boas,precisava de ajuda pra um programa que estou a tentar fazer: fazer uma estrutura tbi que armazene informaçao sobre bilhetes de identidade: preciso de implememtar uma funçao que receba como parametros uma tabela com 5 elementos do tipo tbi(previamente preenchida) e o numero de elementos da tabela.a funcao devera imprimir o nome e o numero de identificaçao do elemento mais novo; fiz isto: mas só me imprime a data do mais novo,nao consigo imprimir o nome e o numero de identificaçao do mesmo. #include<iostream.h> #include<iomanip.h> struct tbi{ char nome[50]; int datanasc[3]; unsigned int numident; }; void inseretab(tbi t[],int n); void maior(tbi valores[],int n,int res[3]); void main(){ tbi tabela[5]; inseretab(tabela,5); int data[3]; maior(tabela,5,data); cout << data[0] << "/" << data[1] << "/" << data[2] << endl; } void inseretab(tbi t[],int n){ int i; cout<<"insira os dados de :"<<n<<" elementos"<<endl; for (i = 0; i < n; i++) { cout << "introduza o nome :"; cin.getline(t.nome, 50); cout << "introduza data de nascimento" << endl; cout << "ano "; cin >> t.datanasc[0]; cout << "mes"; cin >> t.datanasc[1]; cout << "dia"; cin >> t.datanasc[2]; cout << "introduza o numero de indentificacao"; cin >> t.numident; cin.get(); cout << endl; } } void maior(tbi tabela[],int n,int res[3]) { int ano_maximo = 0, mes_maximo = 0, dia_maximo = 0,i=0; tbi mais_novo; for (i=0;i<n;i++) { if (tabela.datanasc[0] == ano_maximo) { if (tabela.datanasc[1] == mes_maximo) { if (tabela.datanasc[2] >= dia_maximo) { mais_novo = tabela; ano_maximo = tabela.datanasc[0]; mes_maximo = tabela.datanasc[1]; dia_maximo = tabela.datanasc[2]; } } else if (tabela.datanasc[1] > mes_maximo) { mais_novo = tabela; ano_maximo = tabela.datanasc[0]; mes_maximo = tabela.datanasc[1]; dia_maximo = tabela.datanasc[2]; } } else if (tabela.datanasc[0] > ano_maximo) { mais_novo = tabela; ano_maximo = tabela.datanasc[0]; mes_maximo = tabela.datanasc[1]; dia_maximo = tabela.datanasc[2]; } } res[0]=dia_maximo; res[1]=mes_maximo; res[2]=ano_maximo; } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Dezembro 18, 2006 uma idéia é fazer com que a funcão maior te retorne o índice do registro que possui a menor idade, com o número de registro na main é só colocar o cout para imprimir o registro que voce quer int maior(tbi tabela[],int n,int res[3]){ int ano_maximo = 0, mes_maximo = 0, dia_maximo = 0,i=0, ma; tbi mais_novo; for (i=0;i<n;i++) { if (tabela[i].datanasc[0] == ano_maximo) { if (tabela[i].datanasc[1] == mes_maximo) { if (tabela[i].datanasc[2] >= dia_maximo) { mais_novo = tabela[i]; ano_maximo = tabela[i].datanasc[0]; mes_maximo = tabela[i].datanasc[1]; dia_maximo = tabela[i].datanasc[2]; ma=i; } } else if (tabela[i].datanasc[1] > mes_maximo) { mais_novo = tabela[i]; ano_maximo = tabela[i].datanasc[0]; mes_maximo = tabela[i].datanasc[1]; dia_maximo = tabela[i].datanasc[2]; ma=i; } } else if (tabela[i].datanasc[0] > ano_maximo) { mais_novo = tabela[i]; ano_maximo = tabela[i].datanasc[0]; mes_maximo = tabela[i].datanasc[1]; dia_maximo = tabela[i].datanasc[2]; ma=i; } } res[0]=dia_maximo; res[1]=mes_maximo; res[2]=ano_maximo; return ma;} Compartilhar este post Link para o post Compartilhar em outros sites