Logo Hardware.com.br
bamattos
bamattos Tô em todas Registrado
2.2K Mensagens 4 Curtidas

Linguagem C - Loop so roda uma vez...

#1 Por bamattos 30/08/2003 - 18:59
Por que o nome do aluno so e pedido uma vez nesse loop?

#include
#include
int main()
{
float nota1, nota2, nota3, nota4, media;
char nome[25];
while(media!=0)
{
printf("Informe o nome do aluno: ");
gets(nome);
printf("\nInforme a primeira nota: ");
scanf("%f", &nota1);
printf("Informe a segunda nota: ");
scanf("%f", &nota2);
printf("Informe a terceira nota: ");
scanf("%f", &nota3);
printf("Informe a quarta nota: ");
scanf("%f", &nota4);
media = (nota1+nota2+nota3+nota4)/4;
printf("Nome do aluno: %s",nome);
printf("\nMedia do Aluno: %2.2f\n",media);
if(media<5)
printf("REPROVADO!!!!!!!\n");
else if(media>=5 && media<7)
printf("PROVA FINAL!!!!!!!\n");
else
printf("APROVADO!!!!!!\n");
}
}

Muito Obrigado.
bamattos
bamattos Tô em todas Registrado
2.2K Mensagens 4 Curtidas
#3 Por bamattos
30/08/2003 - 19:13
Ué, mas eu nao to contando os alunos, o que eu quero é fazer e q o loop simplesmente se repita apos eu inserir os dados, e fazer as medias denovo, ele nao precisa guardar nenhum valor, o calculo c/ as notas funciona pefeitamente, mas qdo eu tento o inserir os dados mais uma vez ele pula a pergunta sobre o nome do aluno e passa logo para as perguntas das notas..........
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#5 Por jose_silva_n...
31/08/2003 - 11:54
bamattos
Por que o nome do aluno so e pedido uma vez nesse loop?

#include
#include
int main...


Boa Tarde,

Eu modifiquei o programa para que ele rodasse no Linux(o header conio.h não faz parte do C ANSI); fora isso, só tive que inicializar a variável "media" e mudar a entrada de "nome", troquei o "gets" por um "scanf":

#include
#include
int main()
{
float nota1, nota2, nota3, nota4, media;
char nome[25];

media = 10;
while(media!=0)
{
printf("Informe o nome do aluno: ");
scanf("%s",nome);
printf("\nInforme a primeira nota: ");
scanf("%f", &nota1);
printf("Informe a segunda nota: ");
scanf("%f", &nota2);
printf("Informe a terceira nota: ");
scanf("%f", &nota3);
printf("Informe a quarta nota: ");
scanf("%f", &nota4);
media = (nota1+nota2+nota3+nota4)/4;
printf("Nome do aluno: %s",nome);
printf("\nMedia do Aluno: %2.2f\n",media);
if(media<5)
printf("REPROVADO!!!!!!!\n");
else if(media>=5 && media<7)
printf("PROVA FINAL!!!!!!!\n");
else
printf("APROVADO!!!!!!\n");
}
return(0);
}


Té+

Kali
bamattos
bamattos Tô em todas Registrado
2.2K Mensagens 4 Curtidas
#9 Por bamattos
31/08/2003 - 14:23
Eu já tinha tentado isso aqui , o scanf(), so vai ler uma palavra, se eu colocar nome e sobrenome ele vai parar de ler qdo eu der o primeiro espaço, com gets na primeira passagem ele lê normalmente, mas da segunda em diante ele pula a primeira pergunta(sobre o nome) vai passa para a segunda(sobre a primeira nota)...........

Eu to desconfiado que pode ser
alguma coisa relacionada a esse simbolo("\n")
mas não notei nada diferente................
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#12 Por jose_silva_n...
31/08/2003 - 16:29
bamattos
Eu não entendo porque o gets(nome) só funciona uma vez...........
O "\n" é a única coisa que me ocorreu..............


Boa Tarde,

Falha minha...a função scanf ignora espaços em branco, uma solução(bem vagaba) está a seguir...ainda preciso pensar em como entrar com o nome completo de uma única vez:

#include
#include
int main()
{
float nota1, nota2, nota3, nota4, media;
char prenome[25];
char sobrenome[25];

media = 10;
while(media!=0)
{
printf("Informe o prenome do aluno: ");
scanf("%s",prenome);
printf("\nInforme o sobrenome do aluno: ");
scanf("%s",sobrenome);
printf("\n Informe a primeira nota: ");
scanf("%f", &nota1);
printf("Informe a segunda nota: ");
scanf("%f", &nota2);
printf("Informe a terceira nota: ");
scanf("%f", &nota3);
printf("Informe a quarta nota: ");
scanf("%f", &nota4);
media = (nota1+nota2+nota3+nota4)/4;
printf("Nome do aluno: %s%c%s",prenome,' ',sobrenome);
printf("\nMedia do Aluno: %2.2f\n",media);
if(media<5)
printf("REPROVADO!!!!!!!\n");
else if(media>=5 && media<7)
printf("PROVA FINAL!!!!!!!\n");
else
printf("APROVADO!!!!!!\n");
}
return(0);
}

Té+

Kali
bamattos
bamattos Tô em todas Registrado
2.2K Mensagens 4 Curtidas
#15 Por bamattos
31/08/2003 - 22:17
Se eu eliminar as perguntas sobre as notas e deixar so a pergunta sobre o nome, o loop funciona normalmente...........
Deve ter algum tipo de conflito ou regra de
precedencia envolvendo scanf() e gets() acho eu...............
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal