Ir ao conteúdo
  • Cadastre-se

C Calcular media e ordenar por ordem alfabetica.


PepsiColly

Posts recomendados

Segue abaixo exercicio, estou tendo problema com a media a mesma me retorna resultado de apenas uma linha, e quando adiciono media ele zera o resultado. 

Crie um programa que recebe 3 nomes de alunos e 5 notas para cada um. O programa deve calcular a média das 5 notas e imprimir para cada aluno o conceito de acordo com a tabela a seguir:

Modifique o programa anterior para imprimir a lista de alunos: (a) por ordem alfabética (b) por ordem decrescente de conceito (A > B > C > D).

<>

#include <stdio.h>
#include <string.h>

main(){
    char nome [3][50];
    double nota[5], media = 0, soma = 0;
    int i, j, cont;
    
    for(i = 0;i < 3;i++){
        soma = 0;
        printf("Nome aluno %do: ", i+1);
        scanf("%s", &nome);
        for(j = 0;j < 5;j++){
            printf("Insira a %do nota: ",j+1);
            scanf("%lf",&nota);
            soma += nota[j + 1];
            
        //    media = soma / 5;
        }
        printf("Aluno: %s \nMedia das notas: %.lf\n", nome, soma);
    }
    for(i = 0;i < 3;i++){
    
    }
    
}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá, fiz umas alterações no seu código e coloquei uns comentários para explicar o que fiz e deixei o que você tinha escrito como comentário, pra identificar melhor as mudanças. Qualquer coisa só falar.

Está ai:

int main(){ // tinha faltado colocar "int" nessa linha
    char nome [3][50];
    double nota[5], media = 0, soma = 0;
    int i, j, cont;
    
    for(i = 0;i < 3;i++){
        soma = 0;
        printf("Nome aluno %do: ", i+1);
        scanf("%s", &nome);
        
        for(j = 0;j < 5;j++){
            printf("Insira a %do nota: ",j+1);
           // scanf("%lf",&nota); 
          // quando se escreve o nome de um vetor sem posicao, esta sendo considerado a primeira posicao do vetor
			scanf("%lf",&nota[ j ]);
          
            // as posições dos vetores começam do 0 e não do 1, 1º posicao do vetor = vet[0]
            //soma += nota[j + 1];
			soma += nota[ j ];
            media = soma / 5; // essa linha estava como comentario, a media nao estava sendo calculada nunca
        }
       // printf("Aluno: %s \nMedia das notas: %.lf\n", nome, soma); // você colocou para imprimir a soma, nao a media.
       printf("Aluno: %s \nMedia das notas: %lf\n", nome, media);
      // E no indicador de float "%.lf" você colocou um ponto, se o ponto estiver ali
       // e nao acompanhado de um numero, nenhum numero depois da virgula sera imprimido.
    }
    for(i = 0;i < 3;i++){
    
    }
    
    return 0; // em C a main() é  sempre bom retornar um valor a sua escolha. Porque se retornar um valor diferente,
  // ai você saberá que houve um erro.
} 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Percebi mais uma coisa.

Quando for ler o segundo aluno, a variável media ainda vai estar com o valor do aluno 1 salvo, se não zerar a variável, a média vai ser um valor estranho. Bom zerar a variável media. Se quiser fazer os a média de todos alunos, seria bom salvar elas em outro lugar( ou transformar a variável  em um vetor), depois somar todas as medias e fazer a media entre elas.

  • 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!