Ir ao conteúdo
  • Cadastre-se
Wesley Versart

C Printar o melhor aluno da turma

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;
}

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vitorpessan mano,o teu código ta funcionando dboa,tentei fazer aqui,porém nao consigo printar pois ta com um erro na linha do printf,uso codeblocks.

ps:editei e botei outro print pois a palavra maior estava escrita errada em um vetor,mas mesmo assim da erro.

 

image.thumb.png.d5b474d845bdd5fbd6e701efa6f4575f.png

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nos colchetes o índice está escrito "maoir" ao invés de "maior".

Leia a mensagem de erro ela costuma dar uma boa ideia de onde está o problema.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@isrnick valeu man,dps arrumei,mas mesmo assim nao funciona :(

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Wesley Versart disse:

@isrnick valeu man,dps arrumei,mas mesmo assim nao funciona :(

Então, poste ele inteiro quando for assim, pois como disse anteriormente, pode estar com problemas - por exemplo - em alguma chave que fechou a mais.

Compartilhar este post


Link para o post
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;
}

 

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

@vitorperssan vou testar.

 

adicionado 3 minutos depois

@vitorpessan  Muito obrigado man,consegui aqui.Que Deus te abençoe :)

adicionado 13 minutos depois

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!