Ir para conteúdo
Fórum Script Brasil
  • 0

TAD


JoseMário

Pergunta

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

  • 0
Guest --Brown --

segue:

#include<stdio.h>

int main (void)

{

char linha[80];

FILE *p;

char nomeArq[81];

char nomeA[51];

int quantAl;

int i;

float nota;

float media;

printf("Nome do arquivo?");

fgets(nomeArq, 81, stdin);

nomeArq[strlen(nomeArq)-1] = '';

p = fopen(nomeArq, "r");

if (p==NULL)

{

printf("Erro na abertura do arquivo.");

return 1;

}

fgets(linha, 80, p);

sscanf(linha, "%d", &quantAl);

for (i = 0; i < quantAl; i++)

{

media = 0.0;

fgets(nomeA, 51, p);

fgets(linha, 80, p);

sscanf(linha, "%f", ¬a);

media += nota;

fgets(linha, 80, p);

sscanf(linha, "%f", ¬a);

media += nota;

if (media/2 < 7)

{

printf(nomeA);

}

}

fclose(p);

system("pause");

return 0;

}

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Brown --

segue:

#include<stdio.h>

int main (void)

{

char linha[80];

FILE *p;

char nomeArq[81];

char nomeA[51];

int quantAl;

int i;

float nota;

float media;

printf("Nome do arquivo?");

fgets(nomeArq, 81, stdin);

nomeArq[strlen(nomeArq)-1] = '';

p = fopen(nomeArq, "r");

if (p==NULL)

{

printf("Erro na abertura do arquivo.");

return 1;

}

fgets(linha, 80, p);

sscanf(linha, "%d", &quantAl);

for (i = 0; i < quantAl; i++)

{

media = 0.0;

fgets(nomeA, 51, p);

fgets(linha, 80, p);

sscanf(linha, "%f", ¬a);

media += nota;

fgets(linha, 80, p);

sscanf(linha, "%f", ¬a);

media += nota;

if (media/2 < 7)

{

printf(nomeA);

}

}

fclose(p);

system("pause");

return 0;

}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...