samyr Postado Dezembro 15, 2007 Denunciar Share Postado Dezembro 15, 2007 Estou com problemas a algum tempo e não consigo soluciona-lo, e o seguinte, o programa roda sem problemas de início mas na segunda repetição ele pula umas etapas esse programinha abaixo é apenas um exemplo do que está acontecendo, se alguém encontrar o que há de erradoAgradeço.#include <stdio.h> main(){ char sa; int s,b; while(b!='s'){ printf("digite (h)ou(m): \n"); scanf("%c",&sa); if((sa == 'h')||(sa == 'H')){s = 1;} else{ if((sa == 'm')||(sa == 'M')){s = 2;} else{s = 0;}} printf(" %d \n",s); printf("sair(s)\n"); b = getche();} getche(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Caio -- Postado Dezembro 15, 2007 Denunciar Share Postado Dezembro 15, 2007 não qual o seu compilador, mas alguns deles incluindo o DEV-cpp (todas as verões) posuem um tipo de bug para se ler dados do tipo char esperimente por essa linha de comando fflush(stdin); antes do scanf("%c",&sa); já tive problemas com isso tb =/espero ter ajudado =] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --caio -- Postado Dezembro 15, 2007 Denunciar Share Postado Dezembro 15, 2007 o primeiro problema foi apenas batendo o olho =Peu copiei o codigo e fui compilalo e outro problema que eu encontrei foi um erro de logica:esperimente trocar a variavel b pela variavel sa dentro da condição do laço forpois ela é que esta recebendo os valore h, m e s que é a condição para ela sair xD#include <stdio.h> #include <windows.h> main() { char sa; int s,b; while(sa!='s') { printf("\ndigite (h)ou(m)ou(s)para sair: \n"); fflush(stdin); scanf("%c",&sa); if((sa == 'h')||(sa == 'H')) { s = 1; } else { if((sa == 'm')||(sa == 'M')) { s = 2; } else { s = 0; } } printf(" %d \n",s); } _sleep(5000); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 samyr Postado Dezembro 16, 2007 Autor Denunciar Share Postado Dezembro 16, 2007 Uso o Dev-c++, estava suspeitando que houvesse um problema de lójica, vou testar as dicas, obrigado a todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Dezembro 20, 2007 Denunciar Share Postado Dezembro 20, 2007 Como disse o amigo ai encima e um bug ...adicione apenas fflush(stdin); antes do scanf("%c",&sa);de resto esta tudo correto ... abracos Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Kassi Postado Janeiro 7, 2008 Denunciar Share Postado Janeiro 7, 2008 Olá,Analisando o código também pude perceber que a váriavel b não foi inicializada.É um bom costume de programação inicializar a váriavel antes de utilizá-la numa comparação(teste do seu conteúdo), pois poderá acotencer de não entrar no laço primeiramente por causa do lixo na memória.Também seria bom declarar b como char e não int só pela questão de legibilidade do código. ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
samyr
Estou com problemas a algum tempo e não consigo soluciona-lo,
e o seguinte, o programa roda sem problemas de início mas na segunda
repetição ele pula umas etapas esse programinha abaixo é apenas um
exemplo do que está acontecendo, se alguém encontrar o que há de errado
Agradeço.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.