Ir ao conteúdo

Problema em jogo(simples), limpeza de buffer


bigscold

Posts recomendados

Postado

Boa tarde galera, estou programando um jogo muito simples para faculdade, ele vai funcionar igual a um quis do show do milhão. Sou novato em C, e estou com uma dificuldade gigantesca, pois aconteceu um erro e não faço a menor ideia de como resolver.

Meu problema é o seguinte, o jogador escolhe a opção certa e errada, e assim continua, funciona muito bom na primeira pergunta. Mas a segunda e terceira pergunta ele sempre caiu no ELSE afirmando que a reposta está errada. Coloquei no código o comando printf("%c", resposta2); para ver o que o computador estava recolhendo do usuário e ele respondeu ''õ''. Já tentei algumas coisas, inclusive limpando o buffer com setbuf(stdin,NULL); e fflush(stdin);

Como eu disse só funciona a primeira pergunta, todas as outras ele entra no ELSE. Ajuda!


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

int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
int idade=0;
char nome[30];
char confirma;
int saldo;
int perdeu=3;
int continua;
char de novo;
char resposta1;
char cresposta1 = 'b';
char resposta2;
char cresposta2 = 'd';
char resposta3;
char cresposta3 = 'a';
saldo=10000;
printf("%c", cresposta2);
printf("%c", cresposta3);

printf("%d\n", saldo);
printf("PRIMEIRA PERGUNTA\nO que significa a sigla NR-10?\na) Norma Rotativa – 10\nb) Norma Regulamentadora – 10 - CERTA\nc) Norma Restritiva-10\nd) Nelson Rodrigues - 10\n");
fflush(stdin);
scanf("%c",&resposta1);
if (resposta1==cresposta1){
saldo = saldo + 10000;
printf("Certa resposta!!! fácil não? Seu saldo agora é %d\n\n", saldo);
}
else{
perdeu--;
saldo = saldo - 10000;
printf("Errou... errou feio, errou rude!! Seu saldo diminuiu e agora é %d reais\n\n", saldo);
}

setbuf(stdin,NULL);
// PERGUNTA 2
if (perdeu > 0)
continua = 1;


while (continua>0){
printf("SEGUNDA PERGUNTA\nA NR-10 objetiva:\n\na) Tornar o trabalho menos cansativo\nb) Garantir o cumprimento das leis trabalhistas\nc) Aumentar o número de empregados no país\nd) Garantir a segurança e a saúde dos trabalhadores no ambiente de trabalho - CERTA\n");
setbuf(stdin,NULL);
scanf("%c",&cresposta2);
if (resposta2==cresposta2){
saldo = saldo + 10000;
printf("Certa resposta!!! fácil não? Seu saldo agora é %d\n\n", saldo);
}
else{
perdeu--;
saldo = saldo - 10000;
printf("Errou... errou feio, errou rude!! Seu saldo diminuiu e agora é %d reais\n\n", saldo);
continua--;
}
}
printf("%c", resposta2);
// FIM PERGUNTA 2

// PERGUNTA PERGUNTA 3
if (perdeu > 0)
continua = 1;


while (continua>0){
printf("Segundo a NR-10, cabe aos trabalhadores:\na) Zelar pela sua segurança e saúde e a de outras pessoas que possam ser afetadas por suas ações ou omissões no trabalho - CERTA\nb) *Promover ações de controle de riscos originados por outrem em suas instalações elétricas\nc) *Manter os trabalhadores informados sobre os riscos a que estão expostos\nd) Conhecer métodos de resgate padronizados e adequados às suas atividades\n");
fflush(stdin);
scanf("%c",&cresposta3);
if (resposta3==cresposta3){
saldo = saldo + 10000;
printf("Certa resposta!!! fácil não? Seu saldo agora é %d\n\n", saldo);
}
else{
perdeu--;
saldo = saldo - 10000;
printf("Errou... errou feio, errou rude!! Seu saldo diminuiu e agora é %d reais\n\n", saldo);
}
}

Postado

Você esta colocando no scanf da segunda e terceira perguntas, cresposta em vez de resposta numero da pergunta:


printf("SEGUNDA PERGUNTA\nA NR-10 objetiva:\n\na) Tornar o trabalho menos cansativo\nb) Garantir o cumprimento das leis trabalhistas\nc) Aumentar o número de empregados no país\nd) Garantir a segurança e a saúde dos trabalhadores no ambiente de trabalho - CERTA\n");
setbuf(stdin,NULL);
[B][COLOR="Red"] scanf("%c",&cresposta2);//coloque apenas resposta2[/COLOR][/B]

Ficará assim:

printf("SEGUNDA PERGUNTA\nA NR-10 objetiva:\n\na) Tornar o trabalho menos cansativo\nb) Garantir o cumprimento das leis trabalhistas\nc) Aumentar o número de empregados no país\nd) Garantir a segurança e a saúde dos trabalhadores no ambiente de trabalho - CERTA\n");
setbuf(stdin,NULL);
[COLOR="Blue"]scanf("%c",&resposta2);[/COLOR]//você colocou cresposta2, sendo que esta variavel é que vai verificar se a resposta esta cesta
//devia usar resposta2

O mesmo vale pra terceira questão

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!