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", ¬a1);
printf("Informe a segunda nota: ");
scanf("%f", ¬a2);
printf("Informe a terceira nota: ");
scanf("%f", ¬a3);
printf("Informe a quarta nota: ");
scanf("%f", ¬a4);
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.
- Home
- >
- Fórum
- >
- Profissional
- >
- Programação, Sc...
- >
- Linguagem C - Loop so rod...
bamattosPor que o nome do aluno so e pedido uma vez nesse loop?
#include
#include
int main...
vc soh criou loop pras medias e nao pra quantidade de alunos
"Eu acreditava no sistema, até que formataram minha família."
"Se as coisas são feitas para serem usadas e as pessoas para serem amadas, por que amamos as coisas e usamos as pessoas ???"
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
Vc se referiu a condição
while(media != 0) ????
Ela tem q se referir aos alunos tb?
Valeu!!!!..........
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
bamattosPor 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", ¬a1);
printf("Informe a segunda nota: ");
scanf("%f", ¬a2);
printf("Informe a terceira nota: ");
scanf("%f", ¬a3);
printf("Informe a quarta nota: ");
scanf("%f", ¬a4);
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
Só uma dica pro nosso amigo iniciante, como tu estás começando tenta otimizar tuas entradas pra debug, tipo assim ao invés de while(media!=0)
usa while(nome!=0) ai tu não terás que entrar 4x os dados pra ver se deu ceto ou errado.
Mas o scanf() só vai ler o primeiro nome, o sobrenome nao vai ser registrado...........
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
Por que o programa pula a pergunta do nome qdo roda pela segunda vez?
É isso que eu não entendo.............
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
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
Que eu saiba o /n só faz a quebra de linha.
Eu não entendo porque o gets(nome) só funciona uma vez...........
O "\n" é a única coisa que me ocorreu..............
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
bamattosEu 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", ¬a1);
printf("Informe a segunda nota: ");
scanf("%f", ¬a2);
printf("Informe a terceira nota: ");
scanf("%f", ¬a3);
printf("Informe a quarta nota: ");
scanf("%f", ¬a4);
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
Aqui tem um programinha que le um nome todo mesmo que tenha espaços:
#include
#include
#include
#include
main(){
char nome[50];
int c;
printf("\nDigite o seu nome: ");
gets(nome);
printf("Seu nome eh \%s", nome);
getch();
}
mas eu já consigo entrar com nome e sobrenome de uma vez, só que isso só acontece na primeira passagem do loop, na segunda ele pula sabe-se la pq..............
XP-ProSP2 / AthlonX2 6000+ / M2N32-SLI DLX WIFI / 4GB OCZ / BFG8800GTX / Extream SF Aurora 600W / Seagate Sata 250GB ST3250620AS / LG GSA-H62N Sata
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