Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com cadeira de caracteres


Luis Paulo Silva Pereira

Pergunta

Pessoal estou fazendo um programa simples onde digita-se o nome e a nota de alguns alunos e no final ele dará o nome de quem obteve a maior nota. Quando executo o programa o windows está apresenta um erro como se o programa entrasse em looping infinito. Não encontrei o erro ainda . .se alguém puder me ajudar. Ai vai o código:

#include <stdio.h>
int main (void)
{
int contador = 1, nalunos;
char nome[50], maiornome[50];
float nota=0, maiornota=0;
printf ("Quantos alunos a turma tem? ");
scanf ("%d", &nalunos);
printf ("\n");
while (contador <= nalunos)
{
printf ("Digite o nome do aluno %d: ", contador);
scanf (" %50[^\n]", nome);
printf ("Digite a nota de %s: ", nome);
scanf ("%f", &nota);
if (maiornota < nota)
{
maiornome[50] = nome[50];
maiornota = nota;
}
contador = contador + 1;
}
printf ("\n");
printf ("A maior nota foi de %s com nota %f", maiornome[50], maiornota);
return 0;
}
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Opa, beleza?

Se a sua intenção é copiar todo o conteúdo de um array de chars, você não pode fazer esse tipo de atribuição:

maiornome[50] = nome[50];

Inclua o header <string.h> e utilize strcpy:

strcpy(maiornome, nome);

Por último, na hora de imprimir o resultado, você utiliza %s, o que é usado pra strings ou cadeia de chars, e fornece apenas um char:

printf ("A maior nota foi de %s com nota %f", maiornome[50], maiornota);

Pra corrigir basta tirar o índice da variável:

printf ("A maior nota foi de %s com nota %f", maiornome, maiornota);

Testa aí e se não der certo, avise pra gente ajudar...

Link para o comentário
Compartilhar em outros sites

  • 0

Muito Obrigado! Funcionou sim! Eu tinha encontrado uma outra solução, mas a sua foi bem mais interessante e rápida. rs

A solução que eu havia encontrada era esta:

#include <stdio.h>

int main (void)
{
int contador = 1, nalunos;
char nome[50], maiornome[50];
float nota=0, maiornota=0;
printf ("Quantos alunos a turma tem? ");
scanf ("%d", &nalunos);
printf ("\n");
while (contador <= nalunos)
{
printf ("Digite o nome do aluno %d: ", contador);
scanf (" %50[^\n]", nome);
printf ("Digite a nota de %s: ", nome);
scanf ("%f", &nota);
if (maiornota < nota)
{
int i=0;
while (nome != '\0')
{
maiornome = nome;
i = i + 1;
}
maiornota = nota;
}
contador = contador + 1;
}
printf ("\n");
printf ("A maior nota foi de %s com nota %4.2f", maiornome, maiornota);
return 0;
}
Inseri a parte em negrito. Como eu criei um vetor para armazenar a cadeira de caracteres, criei um laço para copiar vetor por vetor e deu certo.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...