Ir ao conteúdo

Problema com condicional


Viniciuspew

Posts recomendados

Postado

Olá, estou com um problema no meu jogo de 'hangman' (forca), tudo parece funcionar perfeitamente mas a condição que deveria dizer se a letra usada está incorreta parece estar com problemas, TODAS as vezes ela é acionada, não entendo o porque. alguem poderia por favor me ajudar? o codigo não é complexo, sei o basico de C e uso o Turbo C++.

o a parte que aparenta erro é essa:

if(L!=C[j])

{e=e+1;

printf("%i %i",e,l);

notem que o printf mostrando 'e' e 'l' foi criado somente para eu entender o que estava acontecendo.

segue o condigo inteiro: grato!


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int P,p,w,i,j,cont,l,e,v;
char L,L1,d[50],I,E[20],M[20],C[20];

main()
{clrscr();
v=0;
for(j=0;j<l;j++)
{E[j]='_';}
cont=0;
e=0;
textcolor(RED);
cprintf("Bem-vindo JIGSAW.");
printf("\nDigite quantas letras tem a palavra secreta: ");
scanf("%i",&l);
for(j=0;j<l;j++)
{printf("%i Letra: ",j+1);
scanf("%s",&L);
C[j]=L;
M[j]='_';}
printf("\nDigite a dica que sera dada ao jogador: ");
scanf("%s",&d);

getch();
clrscr();

printf("Jogo pronto. iniciar? (Y para sim, N para sair): ");
scanf("%s",&I);
if(I=='Y' || I=='y')
{clrscr();
textcolor(GREEN);
cprintf("\nOla, bem-vindo a SAW, eu quero jogar um jogo.\nOla, bem-vindo a SAW, eu quero jogar um jogo.\nOla, bem-vindo a SAW, eu quero jogar um jogo.\nOla, bem-vindo a SAW, eu quero jogar um jogo.\nOla, bem-vindo a SAW, eu quero jogar um jogo.\nOla, bem-vindo a SAW, eu quero jogar um jogo.");
getch();
clrscr();
printf("\n\n");
printf(" ");
for(j=0;j<l;j++)
{printf("%c ",M[j]);}
printf("\n\nLetras erradas: ");
printf("\n\nErros: 0/5");
printf("\nSua dica ‚: %s",d);
getch();
clrscr();
do
{
printf("\nEscolha uma letra: ");
scanf("%c",&L1);
e=0;
v=0;
for(j=0;j<l;j++)
{if(L1==C[j])
{printf("\nCorreto!");
M[j]=L1;
getch();}
if(L!=C[j])
{e=e+1;
printf("%i %i",e,l);
getch();
if(e==l)
{printf("\nERRADO!");
E[cont]=L1;
cont=cont+1;
getch();}}}
clrscr();
printf(" ");
printf("\n\n");
for(j=0;j<l;j++)
{printf("%c ",M[j]);}
printf("\n\nLetras erradas: ");
for(j=0;j<l;j++)
{printf("%c ",E[j]);}
printf("\n\nErros: %i/5 \n",cont);
for(j=0;j<l;j++)
{if(C[j]==M[j])
{v = v+1;
if(v==l)
{clrscr();
printf("voce venceu. parabens.\n\n");
printf(" ");
printf("\n\n");
for(j=0;j<l;j++)
{printf("%c ",M[j]);}
printf("\n\nLetras erradas: ");
for(j=0;j<l;j++)
{printf("%c ",E[j]);}
printf("\n\nErros: %i/5",cont);
getch();
exit(0);}}}}
while(cont<5);
clrscr();
printf(" ");
printf("\n\n");
for(j=0;j<l;j++)
{printf("%c ",M[j]);}
printf("\n\nLetras erradas: ");
for(j=0;j<l;j++)
{printf("%c %c ",E[j],E[cont]);}
printf("\n\nErros: %i/5",cont);
getch();
clrscr();
textcolor(RED);
cprintf("\n\nErros: %i/5",cont);
textcolor(YELLOW);
cprintf("\n\nErros: %i/5",cont);
textcolor(RED);
cprintf("\n\nErros: %i/5",cont);
textcolor(YELLOW);
cprintf("\n\nErros: %i/5",cont);
textcolor(RED);
cprintf("\n\nErros: %i/5",cont);
getch();
clrscr();
printf("...Tic...");
getch();
clrscr();
printf("...Tac!");
getch();
clrscr();
printf("Tempo.Esgotado. voce foi enforcado. obrigado por JOGAR.");

}

else
{exit(0);
getch();}

getch();
}
[/QUOTE][/SPOILER]

#include<string.h>

Postado

Pode ser por causa da sua leitura dos dados.

Na função "scanf()", quando vai ler um vetor, não precisa do "&":


scanf(" %s", L);

A máscara pra leitura de caracter é "%c":


scanf(" %c",&I);

Como pode ver acima, adicionei um espaço antes do "%". Isso evita erros de leitura, como por exemplo, a tecla "ENTER" que fica no buffer.

Outra coisa, você está comparando a letra da palavra original:


if(L!=C[j])

Não seria "Ll"?

Além disso, não seria melhor usar um "else", ao invés de outro "if", já que o resultado é o oposto do primeiro "if", logo, se não é uma coisa, é outra:


if(L1==C[j])
{
printf("\nCorreto!");
M[j]=L1;
getch();
}
else
{
e=e+1;
printf("%i %i",e,l);
getch();
if(e==l)
{
printf("\nERRADO!");
E[cont]=L1;
cont=cont+1;
getch();
}
}

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