Boa tarde, a todos, sou estudante de SISTEMA DE INFORMAÇÃO PUCMINAS EM BETIM, preciso de uma pequana ajuda, estou fazendo um programa que ler arquivo na raiz, ou seja, você digita o caminho e o programa busca os dados do candidato.
O programa é esse:typedef char palavra [50];
struct candidato
{
palavra nome;
int numero_do_candidato;
int sexo;
int nota_final;
int curso;
};
Os dados dos alunos serão fornecidos em um arquivo binário. O arquivo terá basicamente
o seguinte formato:
Jose A. B.
200815
0
79
7
Maria C. D.
200825
1
80
4
João F. G.
2008153
0
20
3
...
O que o seu programa deverá fazer:
1) Ler o arquivo e colocar os elementos no TAD que você escolheu.
2) Mostrar o número de inscritos no vestibular.
3) Mostrar o nome de quem tirou a maior nota (O primeiro lugar geral).
4) Mostrar a maior nota das mulheres e dos homens (e os respectivos nomes).
5) Mostrar a média das notas.
6) Mostrar quantos estão acima e quantos estão abaixo da média.
7) Mostrar os nomes das 5 maiores notas.
8) Mostrar os aprovados por curso.
9) Ler uma nota do teclado e mostrar todos os candidatos que tiraram aquela nota.
já estou na questão 7, o problema que meu programa, não passa pelo while que mostra as 5 maiores notas, já fiz
várias alterações, mas tudo em vão.. estou trabalhando com uma FILA. o código do programa é:
Pergunta
JoseMário
Boa tarde, a todos, sou estudante de SISTEMA DE INFORMAÇÃO PUCMINAS EM BETIM, preciso de uma pequana ajuda, estou fazendo um programa que ler arquivo na raiz, ou seja, você digita o caminho e o programa busca os dados do candidato.
O programa é esse:typedef char palavra [50];
struct candidato
{
palavra nome;
int numero_do_candidato;
int sexo;
int nota_final;
int curso;
};
Os dados dos alunos serão fornecidos em um arquivo binário. O arquivo terá basicamente
o seguinte formato:
Jose A. B.
200815
0
79
7
Maria C. D.
200825
1
80
4
João F. G.
2008153
0
20
3
...
O que o seu programa deverá fazer:
1) Ler o arquivo e colocar os elementos no TAD que você escolheu.
2) Mostrar o número de inscritos no vestibular.
3) Mostrar o nome de quem tirou a maior nota (O primeiro lugar geral).
4) Mostrar a maior nota das mulheres e dos homens (e os respectivos nomes).
5) Mostrar a média das notas.
6) Mostrar quantos estão acima e quantos estão abaixo da média.
7) Mostrar os nomes das 5 maiores notas.
8) Mostrar os aprovados por curso.
9) Ler uma nota do teclado e mostrar todos os candidatos que tiraram aquela nota.
já estou na questão 7, o problema que meu programa, não passa pelo while que mostra as 5 maiores notas, já fiz
várias alterações, mas tudo em vão.. estou trabalhando com uma FILA. o código do programa é:
essa é parte do programa...
while(!FilaVazia(Dados1))
{
Desenfileirar(Dados1,Aux);
Enfileirar(Dados,Aux);
if(Aux.Info.sexo == 1 && Aux.Info.nota_final > MaiorNotaMulher.nota_final)
{
strcpy(MaiorNotaMulher.nome,Aux.Info.nome);
MaiorNotaMulher.nota_final = Aux.Info.nota_final;
}
if(Aux.Info.sexo == 0 && Aux.Info.nota_final > MaiorNotaHomem.nota_final)
{
strcpy(MaiorNotaHomem.nome,Aux.Info.nome);
MaiorNotaHomem.nota_final = Aux.Info.nota_final;
}
if(Aux.Info.nota_final > Media)
Cont2++;
if(Aux.Info.nota_final < Media)
Cont3++;
}
//Questão numero 7 - Mostrar as cinco maiores notas
cout<<"\n\tNOMES DA 5 MAIORES NOTAS -->";
for(i=0;i<5;i=i+1)
{
CincoMaiorNota.nota_final = 0;
while(!FilaVazia(Dados2))
{
Desenfileirar(Dados2,Aux);
if(Aux.Info.nota_final > CincoMaiorNota.nota_final)
{
strcpy(CincoMaiorNota.nome,Aux.Info.nome);
CincoMaiorNota.nota_final = Aux.Info.nota_final;
}
Enfileirar(Dados,Aux);
}
while(!FilaVazia(Dados1))
{
Desenfileirar(Dados2,Aux);
if(Aux.Info.numero_do_candidato == CincoMaiorNota.numero_do_candidato)
cout<<i+1<<" "<<Aux.Info.numero_do_candidato << endl;
Enfileirar(Dados1,Aux);
}
}
/*
while(!FilaVazia(Dados2))
{
Desenfileirar(Dados1,Aux);
Enfileirar(Dados,Aux);
Enfileirar(Dados2,Aux);
if(Aux.Info.sexo == 1 && Aux.Info.nota_final > MaiorNotaMulher.nota_final)
{
strcpy(MaiorNotaMulher.nome,Aux.Info.nome);
MaiorNotaMulher.nota_final = Aux.Info.nota_final;
}
if(Aux.Info.sexo == 0 && Aux.Info.nota_final > MaiorNotaHomem.nota_final)
{
strcpy(MaiorNotaHomem.nome,Aux.Info.nome);
MaiorNotaHomem.nota_final = Aux.Info.nota_final;
}
if(Aux.Info.nota_final > Media)
Cont2++;
if(Aux.Info.nota_final < Media)
Cont3++;
}
*/
}//fim do for
cout<<"\n\tO PRIMEIRO LUGAR GERAL -->"<<MaiorNota.nome;
cout<<"\n\tHOMEM COM MAIOR NOTA -->"<<MaiorNotaHomem.nome<< " NOTA = "<<MaiorNotaHomem.nota_final;
cout<<"\n\tMULHER COM MAIOR NOTA -->"<<MaiorNotaMulher.nome<<" NOTA = "<<MaiorNotaMulher.nota_final;
cout<<"\n\tA MEDIA DAS NOTAS -->"<<Media;
cout<<"\n\tCANDIDATOS ABAIXO DA MEDIA -->"<<Cont2;
cout<<"\n\tCANDIDATOS ACIMA DA MEDIA -->"<<Cont3;
getch();
fclose(arquivo);
return 0;
}
//---------------------------------------------------------------------------
se alguém pude me ajudar ficarei muito grato...
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.