Ir ao conteúdo

While depois de invalido nao soma?


FLIP ADS

Posts recomendados

Postado

tenho um DO-WHILE...ai quando digito invalido e ele volta no While e digito corretmante ele não soma...

porque?

alguem consegue me explicar e arumar?

(quando digito a tecla correta em primeiro ele soma normal)

#include <stdio.h>
#include <stdlib.h>

int main(){
char tecla;
int f=0, sf=0;

system ("cls");
printf("Se no momento estiver com febre digite a letra <F>\n"
"Se ja esteve com febre e no momento esteja curado digite <N>");
tecla = getchar();
getchar();

do{
if (tecla == 'F' || tecla == 'f')
{
printf("\n\nVoce esta com Febre\n");
f++;
}
else if (tecla == 'N' || tecla == 'n')
{
printf("\n\nVoce esta sem Febre\n");
sf++;
}
else
{
printf("Tecla invalida, redigite, se no momento estiver com febre digite a letra <F>\nSe ja esteve com febre e no momento esteja curado digite <N> ");
tecla = getchar();
getchar();
}
}while((tecla != 'F') && (tecla != 'f') && (tecla != 'N') && (tecla != 'n'));


printf("\n\nPessoa com frebre %i", f);
printf("\n\nPessoa sem frebre %i", sf);
getchar();
return 0;
}

Postado

deixa ve se consigo te explicar...

Você colocou o para ler o valor de "tecla" no "else" no final do DO-WHILE...Ou seja se em primeiro você digitar algo diferente de de 'F' ou 'N' e no "else" você digitar 'F' ou 'N', ele não fará o DO-WHILE de novo...Porque a condição do "while" ja foi satisfeita.

Concertando:

Antes do DO-WHILE, você pede para entrar com um valor para a variável "tecla!", na seguinte linha:

tecla = getchar();

Apague essa linha...E também, acho que seria bom apagar a linha de baixo dela, a que está escrito:

 getchar();

Acho que seria bom, apague essas 2 linhas!

Então coloque a seguinte linha, no começo do DO-WHILE, antes dos "if"s:

tecla = getchar();

e no "else", dentro do DO-WHILE, apague essas duas linhas:

tecla = getchar();
getchar();

Bem...Acho que isso deve consertar :D

Postado

O segundo getchar(); é para pegar o '\n'... vai dar erro se não tirar ele do buffer de entrada...

----------------------------------------------------------------------------------------

EDIT:

Tá, na verdade não vai dar "erro", mas vai imprimir a mensagem de erro duas vezes antes de esperar uma nova entrada...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!