Ir ao conteúdo
  • Cadastre-se

C exibir notas de todos os alunos, da maior para a menor


lsnkesp

Posts recomendados

Então, alguém sabe onde posso estar errando para a média não ser ordenada da forma correta?

Exemplo:

Quantidade: 5
6
7
8
5
8
4
3
2
1
7
6
8
6.5
7
9
4
3
2
7
9
Notas (gerais): [6.5] [4.3] [5.5] [6.6] [5.3]
Notas (ordenadas): [4.3] [5.0] [5.0] [6.0] [6.0]

Eu ordeno, mas não exibe as notas ordenadas IGUAIS à media obtida.

#include <stdio.h>
int main(void) {
	int qA;
	printf("Quantidade: "); scanf("%d", &qA);
	double mediaAluno[qA], soma = 0.0, n1, n2, n3, n4;
	for (int i = 0; i < qA; ++i) {
		scanf("%lf %lf %lf %lf", &n1, &n2, &n3, &n4);
		soma += n1+n2+n3+n4;
		mediaAluno[i] = soma/4;
		soma = 0.0;
	}
	printf("Notas (gerais): ");
	for (int i = 0; i < qA; ++i) {
		printf("[%.1lf] ", mediaAluno[i]);
	}
	for(int i = 1; i < qA; i++){
	    for(int j = 0; j < qA-1; j++){
	        if (mediaAluno[j]>mediaAluno[j+1]) {
		        int tr = mediaAluno[j];
		        mediaAluno[j] = mediaAluno[j+1];
		        mediaAluno[j+1] = tr;
	        }
	    }
	}
	printf("\n");
	printf("Notas (ordenadas): ");
	for (int i = 0; i < qA; ++i) {
		printf("[%.1lf] ", mediaAluno[i]);
	}
	return (0);
}

 

Link para o comentário
Compartilhar em outros sites

A categoria de variável [categoria de dados]  da variável 'tr' é incomparável com tipo no vetor 'mediaAluno' como resultado há arredondamento de frações.

 

Corrigido

#include <stdio.h>
int main (void){
	int  qtdDeAlunos= 0;
	printf ("%s", "Quantidade: "), scanf ("%d", &qtdDeAlunos);
	
	double  mediaAluno [qtdDeAlunos], soma= 0.0, n1, n2, n3, n4;
	for (int  a= 0; a < qtdDeAlunos; ++ a) {
		scanf ("%lf %lf %lf %lf", &n1, &n2, &n3, &n4);
		
		soma= n1 + n2 + n3 + n4;
		mediaAluno[a]= soma / 4.0;
		
		soma= 0.0;
	}
	
	printf("Notas (gerais): ");
	for (int  a= 0; a < qtdDeAlunos; ++ a) {
		printf("[%.1f] ", mediaAluno [a]);
	}
	
	for (int  i= 1; i < qtdDeAlunos; ++ i ) {
	     for (int  j= 0; j < qtdDeAlunos - 1; ++ j) {
	        if (mediaAluno [j] > mediaAluno [j + 1]) {
		        double tr= mediaAluno [j];
		        
		        mediaAluno [j]= mediaAluno[j + 1];
		        mediaAluno [j + 1]= tr;
	}   }   }
	
	printf ("\n");
	printf ("%s", "Notas (ordenadas): ");
	for (int  a= 0; a < qtdDeAlunos; ++ a) {
		printf("[%.1f] ", mediaAluno [a]);
	}
	
	return 0;
}

 

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!