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

Dúvida


alex_dino

Pergunta

tenho um exercicio para fazer que é

Escrever um programa para ler a matrícula sexo e as 3 notas dos alunos de uma turma da faculdade dom bosco de porto....Para finalizar a leitura do conjunto de informações determine uma flag de saida. Os seguintes resultados deveram ser impressos.

- o total de alunos da turma.

-a matricula do aluno com a maior media, independe do sexo

-a matricula da aluna com menor media.

A maneira que eu fiz não está dando certo parece que ele conta só os ultimos dados que eu coloco, e ele não esta contando quantos alunos há na escola?

alguém pode me dar uma ideia?

#include <stdio.h>
int main (void)
{
    int numero_da_matricula,nota_do_aluno,total_de_alunos_turma=0,maior_nota=0,menor_nota=9999;
    int matricula_do_aluno_com_maior_media,matricula_da_aluna_com_menor_media;
    char sexo,resp;
    
     while ((resp!='s')&&(resp!='S'))
    {
           
       printf ("Informe a Matricula= ");
       scanf ("%d",&numero_da_matricula);
       printf ("Informe a Nota= ");
       scanf ("%d",&nota_do_aluno);
       fflush(stdin);
       printf ("Informe o Sexo= ");
       scanf ("%c",&sexo);
       
       
       if (((sexo=='f')||(sexo=='m')&&(nota_do_aluno>maior_nota)))
             maior_nota=nota_do_aluno;
             matricula_do_aluno_com_maior_media=numero_da_matricula;
             total_de_alunos_turma=numero_da_matricula;
             
         
       if ((sexo=='f')&&(nota_do_aluno<menor_nota))
              menor_nota= nota_do_aluno;
              matricula_da_aluna_com_menor_media=numero_da_matricula;
             
                 
              
              
      fflush(stdin);
      printf ("deseja parar ");
      scanf ("%c",&resp);
      } 
        
      printf ("o total de alunos %d sera\n\n",total_de_alunos_turma);
      printf ("a matricula do aluno ou aluna com maior media  %d sera\n\n",matricula_do_aluno_com_maior_media);
      printf ("a matricula da aluna com media %d sera\n\n",matricula_da_aluna_com_menor_media);
     
     system ("pause");
     return (0);
}

Editado por alex_dino
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
e ele não esta contando quantos alunos há na escola?

if (((sexo=='f')||(sexo=='m')&&(nota_do_aluno>maior_nota)))
             maior_nota=nota_do_aluno;
             matricula_do_aluno_com_maior_media=numero_da_matricula;
             total_de_alunos_turma=numero_da_matricula;
            
        
       if ((sexo=='f')&&(nota_do_aluno<menor_nota))
              menor_nota= nota_do_aluno;
              matricula_da_aluna_com_menor_media=numero_da_matricula;
Lógico que não está. Você não incrementa a variável...Ao invés disso atribui o número de matrícula... E não precisa encher de parênteses os ifs. A ordem de processamento é da esquerda para direita. Você só precisa prestar atenção na precedência dos operadores. Se você está mexendo com notas, deveria ser um float, e não int. Além disso, dependendo da escala, as notas vão de 0 a 10 ou 0 a 100. Por que o 9999? E Por que ele é a menor nota e 0 é a maior? Se é p/ executar tudo o que está identado no if, você esqueceu das chaves. Não use fflush(stdin). fflush foi feito para saída de dados, e não entrada. http://www.gidnetwork.com/b-57.html http://ubuntuforums.org/showthread.php?t=83694
#include <stdio.h>
void parseinput() {
  while(getchar()!='\n')continue;
}

int main (void)
{
    int numero_da_matricula,total_de_alunos_turma=0;
    float maior_nota,menor_nota,nota_do_aluno;
    int matricula_aluno_maior_media,matricula_aluna_menor_media;
    char sexo,resp;
    
     while ((resp!='s')&&(resp!='S'))
    {
          
       printf ("Informe a Matricula= ");
       scanf ("%d",&numero_da_matricula);
       printf ("Informe a Nota= ");
       scanf ("%f",&nota_do_aluno);
        parseinput();
       printf ("Informe o Sexo= ");
       scanf ("%c",&sexo);


        if (!total_de_alunos_turma) {
                maior_nota = nota_do_aluno;
                matricula_aluno_maior_media = numero_da_matricula;
        } else {
               if (nota_do_aluno>=maior_nota) {
                        matricula_aluno_maior_media = numero_da_matricula;
                        maior_nota = nota_do_aluno;
                }
        }

       if (sexo == 'f' || sexo == 'F') {
                if(!total_de_alunos_turma) {
                        menor_nota=nota_do_aluno;
                        matricula_aluna_menor_media = numero_da_matricula;
                }else{
                        if(nota_do_aluno<=menor_nota){
                                menor_nota=nota_do_aluno;
                                matricula_aluna_menor_media = numero_da_matricula;
                        }
                }
        }

      total_de_alunos_turma++;

        parseinput();
      printf ("deseja parar?");
      scanf ("%c",&resp);

      }

      printf ("o total de alunos: %d.\n\n",total_de_alunos_turma);
      printf ("a matricula do aluno ou aluna com maior media: %d \n\n",matricula_aluno_maior_media);
      printf ("a matricula da aluna com media %.2f: %d\n\n",menor_nota,matricula_aluna_menor_media);

     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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...