Ajuda - If [RESOLVIDO]

1. Ajuda - If [RESOLVIDO]

thunder
thunder1

(usa Outra)

Enviado em 14/02/2011 - 22:10h

Fazer um programa que de acordo com a opcao do usuário até que ele entre com 's' ou 'n' (Enquanto o usuário entrar com um caracter inválido imprimir na tela a mensagem erro)

Fiz assim:

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

void main(void)
{
char opcao;

do
{
printf("Entre com S ou N:");
scanf("%c",&opcao);
fflush(stdin);
printf("Erro\n");
if(opcao == 's'){
printf("Sim\n");
}
else if(opcao == 'n') {
printf("Nao\n");
}

} while(opcao!='n');
getch();

}

Esta dando erro na hora de mostrar o resultado esperado pelo programa exemplo:

Entre com s ou n: k
opção invalida
Entre com s ou n: s
sim

No entando a saida do programa esta sendo:

Entre com s ou n: k
opção invalida
Entre com s ou n: s
erro
sim



  


2. MELHOR RESPOSTA

Márcia Aparecida Nasaré Silva
marciasilva

(usa Ubuntu)

Enviado em 17/02/2011 - 10:05h

Seu código sempre imprime erro.
Pelo q entendi o erro deve ser impresso enquanto for inválido e deve sair se for digitado s ou n. sua condicão de parada é o caracter ser diferente de n, só sai do loop quando é não, e deveria sair ao digitar s já que está considerando uma opção válida.

do{
printf("Entre com s ou n");
scanf("%c", &opcao);
if(opcao == 's')
printf("Sim");
else if(opcao == 'n')
printf("Nao");
else
printf("Erro");

while(opcao != n && opcao !=s)
}

}

3. Re: Ajuda - If [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 14/02/2011 - 22:17h

Porque você está utilizando as linhas:

fflush(stdin);
printf("Erro\n");

?




4. Ajuda - If

Andre Gerson Ganske
AndreGanske

(usa Ubuntu)

Enviado em 15/02/2011 - 08:11h

Cara

Segundo seu código, você está constantemente imprimindo o erro.
Revise sua lógica pois, independente do valor entrado, a palavra erro será exibida.
Sugiro que você utilize uma estrutura do tipo

if((opcao!=s)&&(opcao!=n)){
if(opcao == s){

}else{

}
}else{
printf("erro");
}

Mais uma coisa, se você está utilizando linux, retire o fflush e o getch do seu código,


Abraço



5. Re: Ajuda - If [RESOLVIDO]

Ezequias Rocha
Ezequias Rocha

(usa Ubuntu)

Enviado em 15/02/2011 - 08:17h

Altere o condicional de parada para:


while((opcao!='n') && (opcao!='s'))


Embraces!


6. Re: Ajuda - If [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 16/02/2011 - 00:40h

Eu fiz assim


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

int main(void)
{
char opcao;

do
{
printf("Entre com S ou N:");
scanf("%c",&opcao);
fflush(stdin);

if(opcao == 's')
printf("Sim\n");
else if(opcao == 'n')
printf("Nao\n");
else
printf("Erro\n");

} while((opcao!='n') && (opcao!='s'));
getch();

}



7. Re: Ajuda - If [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 16/02/2011 - 06:18h

O cara posta um código com problema, a intenção dele é arrumar aquele código, aí vem uns camaradas e dão umas sugestões que não tem nada a ver com o que está no código do criador do tópico. E esse while aí que sugeriram, iria detonar com a memoria do cara. Seria melhor sugerir a estrutura switch/case:

case '1': //Como é char, fica entre as aspas
//corpo
break;
case '2':
//corpo
break;
default:
printf("Opcao invalida!\n");
break;



8. Re: Ajuda - If [RESOLVIDO]

thunder
thunder1

(usa Outra)

Enviado em 25/02/2011 - 14:38h

Obrigado a todos que me ajudaram

problema resolvido








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts