Ir ao conteúdo
  • Cadastre-se

C Qual erro estou cometendo ?


n0v1sk

Posts recomendados

Bom dia clube,

É o seguinte, sempre que executo o for para ler quem sao os alunos e as notas o programa não lê nada após, pois eu quero colocar um if para saber quem são os aprovados. Qual o erro que estou cometendo ?

Questão_Os alunos de informática tiveram cinco provas (uma de cada matéria/disciplina): 1, 2, 3, 4 e 5. Considere aprovado o aluno com nota igual ou superior a 7.0. Criar um programa que leia o Nome dos alunos e as suas respectivas cinco notas. Inicialmente o programa deve perguntar quantos alunos existem na turma e deve também imprimir: Nome dos que foram aprovados em todas as matérias; 

Nome dos alunos aprovados nas matérias 1 e 4;

A porcentagem dos aprovados na matéria 3;

 

Meu programa:

int main(int argc, char *argv[]) {
    char aluno;
    int i, n, aprovadoNota3;
    double nota1, nota2, nota3, nota4, nota5, porcentagem;
    
    printf("\n Quantos alunos tem na turma:");
    scanf("%d", &n);
    
    for( i = 1; i <= n ; i++)
    {
        printf("\n Digite o nome do aluno %i: ", i);
        scanf("%s", &aluno);
        printf("\n Digite a nota da p1: ");
        scanf("%f", &nota1);
        printf("\n Digite a nota da p2: ");
        scanf("%f", &nota2);
        printf("\n Digite a nota da p3: ");
        scanf("%f", &nota3);
        printf("\n Digite a nota da p4: ");
        scanf("%f", &nota4);
        printf("\n Digite a nota da p5: ");
        scanf("%f", &nota5);
      
      if( nota1 >= 7 && nota2 >= 7 && nota3 >= 7 && nota4 >= 7 && nota5 >= 7)
      {
        printf("\n Aprovado: %s", aluno);
      }else if( nota1 >= 7 && nota4 >= 7 )
      {
          printf("\n Alunos aprovados na p1 e p4: %s", aluno);
      }else if( nota3 >= 7)
      {
          aprovadoNota3++;
      }
    }
    porcentagem = aprovadoNota3*100 / n;
    printf("\n Alunos aprovados na p3: %f", porcentagem);

    
    
    
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

@AnsiC putz, muito obrigado tinha esquecido desse detalhe, agora deve funcionar.

adicionado 5 minutos depois

Outra coisa pra fechar, na hora do "printf("\n Aprovado: %s", aluno); " só está imprimindo o nome do ultimo aluno aprovado, como faço pra imprimir os outros alunos quaisquer aprovados ? Não consigo pensar um outra função pra ajudar.

Link para o comentário
Compartilhar em outros sites

@AnsiC Tentei fazer o que me falasse pra fazer, mas n obtive resultado. 

Exemplo:

"printf("\n Aprovado: %s", aluno); " 

Neste printf eu quero que apareça mais de 1 nome, tem como ? Pois, só estas aparecendo apenas 1 aprovado, ou seja na minha leitura eu não tenho só 1 aprovado.

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

Uhmm! Entendi.

Colocando a rotina de verificação

 if( nota1 >= 7 && nota2 >= 7 && nota3 >= 7 && nota4 >= 7 && nota5 >= 7)
      {
        printf("\n Aprovado: %s", aluno);
      }else if( nota1 >= 7 && nota4 >= 7 )
      {
          printf("\n Alunos aprovados na p1 e p4: %s", aluno);
      }else if( nota3 >= 7)
      {
          aprovadoNota3++;
      }

dentro do loop, mais precisamente depois da última nota lida, verá imediatamente se o aluno em questão foi ou não foi aprovado ... Isso resolve ?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!