Ir ao conteúdo
  • Cadastre-se

C Printar o melhor aluno da turma


XXTitioXX

Posts recomendados

Boa tarde,o problema é o seguinte fazer um programa que pegue o nome do aluno e sua nota,e no final printar o nome e a nota do melhor aluno(maior nota)o programa tambem deve perguntar o numero de alunos na sala.Nao estou conseguindo comparar.

Segue o codigo:

#include<stdio.h>
#include<stdlib.h>
  
int main(){

struct ficha{
char nome[20];
float nota[10],maior;};
int quant,i;
struct ficha aluno[10];

printf("Digite a quantidade de alunos da turma:");
scanf("%d",&quant);

for(i=0;i<quant;i++){
    printf("Digite seu nome:");
    scanf("%s",&aluno[i].nome);
    printf("Digite a sua nota:");
    scanf("%f",&aluno[i].nota);
}

for(i=0;i,quant;i++){
    if(aluno[i].nota>maior){
        maior=aluno[i].nota;
    }

    }
}


return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Olá Wesley, tudo bom?

 

Então cara, para seus próximos códigos, recomendo que melhore sua organização para não atrapalhar com chaves extras ou coisas desordenadas. Isso facilita muito a leitura do mesmo.

Refiz seu código e comentei-o. Espero que entenda o que aconteceu e compare com o seu para ver o que estava acontecendo.

 

Segue o código corrigido e me diga se é isso que precisava:

#include<stdio.h>
#include<stdlib.h>

//Struct sempre antes do int main
struct ficha {
	char nome[20];
	float nota;
};
  
int main() {
	//Declaração das variaveis
	int quant, i, cont = 0, melhor;
	float maior;
	
	printf("Digite a quantidade de alunos da turma: ");
	scanf("%d", &quant);
	
	//Declarei o struct depois, para ter o número de alunos exatamente o máximo do digitado anteriormente
	struct ficha aluno[quant];
	
	//Repito as vezes necessárias para atribuir a todos
	for(i = 0; i < quant; i++) {
	    printf("\nDigite seu nome: ");
	    //Quando se atribui a uma string (vetor de caracteres), nao se põe o '&variavel', somente 'variavel'
	    scanf("%s", aluno[i].nome);
	    
	    printf("Digite a sua nota: ");
	    scanf("%f", &aluno[i].nota);
	    
	    /*
			Caso o contador seja zero, ou seja, o primeiro aluno, sua nota
	    	obrigatoriamente será a maior e ele o melhor.
			Depois, verifico se a nota do próximo digitado foi maior que a anterior
		 */
	    if (cont == 0) {
	    	melhor = i; //atribuo o índice a variavel maior para imprimir onome depois
	    	maior = aluno[i].nota;
	    	cont = 1; //deixo o contador como 1 para nao entrar mais aqui, pois depois de digitado alguém, o próxcimo aluno nunca será o primeiro
		} else if(aluno[i].nota > maior) {
	    	melhor = i; //atribuo o índice a variavel maior para imprimir onome depois
	    	maior = aluno[i].nota;
	    }
	}
	
	//Exibo os dados do melhor aluno
	printf("\nMelhor aluno: %s\n", aluno[melhor].nome);
	printf("Sua nota: %.2f\n", aluno[melhor].nota);
	
	return 0;
}

 

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

@vitorpessan

#include<stdio.h>
#include<stdlib.h>


int main(){
struct ficha{
char nome[20];
float nota;
};
int quant,i;
float maior=0;

printf("Digite a quantidade de alunos da turma:");
scanf("%d",&quant);
struct ficha aluno[quant];


for(i=0;i<quant;i++){
    printf("Digite seu nome:");
    scanf("%s",aluno[i].nome);
    printf("Digite a sua nota:");
    scanf("%f",&aluno[i].nota);
    if(aluno[i].nota>maior){
    maior=aluno[i].nota;
}
}

printf("Nome do aluno:%s\nNota do aluno:%f",aluno[maior].nome,aluno[maior].nota);







return 0;
}

 

Link para o comentário
Compartilhar em outros sites

@Wesley Versart É o seguinte, na hora de exibir seus dados no printf(), o índice que está usando é um float, que seria a nota do aluno que você atribuiu dentro do for.

Crie uma variável com qualquer nome, por exemplo: melhor, e atribua o índice i (do vetor) à ela, para quando for exibir o aluno no printf(), exiba o aluno daquela posição i.

 

for(i=0;i<quant;i++){
    printf("Digite seu nome:");
    scanf("%s",aluno[i].nome);
    printf("Digite a sua nota:");
    scanf("%f",&aluno[i].nota);
    if(aluno[i].nota>maior){
      maior=aluno[i].nota;
      melhor=i
	}
}

printf("Nome do aluno:%s\nNota do aluno:%f",aluno[melhor].nome,aluno[melhor].nota);

 

Exemplo:

Mas lembre-se de criar a variável melhor! (Como inteiro). E também, idente sempre seu código!!

 

Abraços.

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!