Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda programa em c


cristiang goettert

Pergunta

olá, eu não sei muito de c, tinha feito um programa em pascal "jogo da forca", dai em quis passar esse programa para c, em c o programa compilo sem nem um erro mas quando executei não deu bem certo, álguem ajuda ai e ve oque tem que mudar no código para o programa funcionar dirreito.

tá ai o código:

#include <stdio.h> 

int main() { 
char a, b[100];
int cont2, cont3, contg, contr, conte, contm, conti, conto, n1, n2;  
 cont3=6;
 cont2=0;
 contg=0;
 contr=0;
 conte=0;
 contm=0;
 conti=0;
 conto=0;
 printf ("\n_______   ");
 printf ("\n|/    |   ");
 printf ("\n|         ");
 printf ("\n|         ");
 printf ("\n|         ");
 printf ("\n|         ");
 printf ("\n|         ");
 printf (" \n                          jogo da forca");
 printf ("  \n                    tente adivinhar a palavra");
 printf ("   \n                    a palavra tem 6 letras");
 printf ("\nvoçê tem o direito de adivinhar a palavra, depois de errar 6 letras vai  ter que digitar a palavra");
 do
 {
 printf ("\ndigite uma letra:");
 scanf ("%c",&a);
 if (a=='g')
   { 
   printf ("\nacertou, é a primeira letra da palavra");
   printf ("\ng _ _ _ _ _");
   printf ("\nchances:%d", cont3);
   contg=contg+1;
   }  
 if (a=='r')
  {
   printf ("\nacertou, é a segunda letra da palavra");
   printf ("\n_ r _ _ _ _");
   printf ("\nchances:%d", cont3);
   contr=contr+1;
  }
 if (a=='e')
  {
   printf ("\nacertou, é a terceira letra da palavra");
   printf ("\n_ _ e _ _ _ ");
   printf ("\nchances:%d", cont3);
   conte=conte+1;
  }
 if (a=='m')
  {
   printf ("\nacertou, é a quarta letra da palavra");
   printf ("\n_ _ _ m _ _");
   printf ("\nchances:%d", cont3);
   contm=contm+1;
  }
 if (a=='i')
  {
   printf ("\nacertou, é a quinta letra da palavra");
   printf ("\n_ _ _ _ i _");
   printf ("\nchances:%d", cont3);
   conti=conti+1;
   }
 if (a=='o')
  {
   printf ("\nacertou, é a sexta e ultima letra da palavra");
   printf ("\n_ _ _ _ _ o");
   printf ("\nchances:%d", cont3);
   conto=conto+1;
  }
 if ((a!='i')&&(a!='g')&&(a!='r')&&(a!='e')&&(a!='m')&&(a!='o'))
  {
   printf ("\nerrou, essa letra não tem na palavra");
   cont2=cont2+1;
   cont3=cont3-1;
   printf ("\nchances:%d", cont3);
    if (cont2==1)
      {     
      printf ("\n_______       ");
      printf ("\n|      |      ");
      printf ("\n|      0      ");
      printf ("\n|             ");
      printf ("\n|             ");
      printf ("\n|             ");
      printf ("\n|             ");
      printf ("\n|             ");
      }
   if (cont2==2)
     {
      printf ("\n_______       ");
      printf ("\n|      |      ");
      printf ("\n|      0      ");
      printf ("\n|      |      ");
      printf ("\n|      |      ");
      printf ("\n|             ");
      printf ("\n|             ");
      printf ("\n|             ");
      }  
   if (cont2==3)
      {   
      printf ("\n_______       ");
      printf ("\n|      |      ");
      printf ("\n|      0      ");
      printf ("\n|     /|      ");
      printf ("\n|      |      ");
      printf ("\n|             ");
      printf ("\n|             ");
      printf ("\n|             ");
      }
   if (cont2==4)
    {
      printf ("\n_______       ");
      printf ("\n|      |      ");
      printf ("\n|      0      ");
      printf ("\n|     /|\     ");
      printf ("\n|      |      ");
      printf ("\n|             ");
      printf ("\n|             ");
      printf ("\n|             ");
    }
   if (cont2==5)
    {
      printf ("\n_______       ");
      printf ("\n|      |      ");
      printf ("\n|      0      ");
      printf ("\n|     /|\     ");
      printf ("\n|      |      ");
      printf ("\n|     /       ");
      printf ("\n|             ");
      printf ("\n|             ");
    }
   if (cont2==6)
    {
      printf ("\n_______       ");
      printf ("\n|      |      ");
      printf ("\n|      0      ");
      printf ("\n|     /|\     ");
      printf ("\n|      |      ");
      printf ("\n|     / \     ");
      printf ("\n|             ");
      printf ("\n|             ");
    }
  }
  }while (cont3>0);
 if (contg>0)
   printf ("\ng _ _ _ _ _");
 if (contr>0)
   printf ("\n_ r _ _ _ _");
 if (conte>0)
   printf ("\n_ _ e _ _ _");
 if (contm>0)
   printf ("\n_ _ _ m _ _");
 if (conti>0)
   printf ("\n_ _ _ _ i _");
 if (conto>0)
   printf ("\n_ _ _ _ _ o");
 printf ("\ndigite a palavra:");
 gets (b);
 if ((b[1]=='g')&&(b[2]=='r')&&(b[3]=='e')&&(b[4]=='m')&&(b[5]=='i')&&(b[6]=='o'))
   { 
   printf ("\nacertou");
   scanf ("%d",&n1);
   }
 else
  {
    printf ("\nerrou");
    printf ("\n_______       ");
    printf ("\n|      |      ");
    printf ("\n|    __0__    ");
    printf ("\n|     /|\     ");
    printf ("\n|      |      ");
    printf ("\n|     / \     ");
    printf ("\n|             ");
    printf ("\n|_____________");
    scanf ("%d",&n2);
  }
 return 0; 
}

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

o problema ta na estrutura de repetição, tipo primeiro ele pede pra você digitar uma letra, digitando a por exemplo vai aparecer essa letra não tem na palavra, até ai tudo beleza mas a segunda repetição ele não deixa digitar a palavra ele já escreve

digite uma letra:

essa, letra não tem na palavra.

e logo já mostra o desenho da forca sem poder nem digitar a letra.

dai a terceira repetição da normal, da para digitar a letra, mas a quarta repetição acontece a mesma coisa que eu falei ali em cima, não deixa digitar a letra e já escreve que essa letra não tem na palavra, e por ai vai.

e depois eu escrevo a palavra certa que é gremio e da que eu errei, mas esse problema acho que com string, não sei como funciona direito string no c.

não sei se você entendeu muito bem essa explicação, mas qualquer coisa executa o programa q você vai entender o problema.

Link para o comentário
Compartilhar em outros sites

  • 0

o problema está aqui:

scanf ("%c",&a);
o C lê um caractere só, mas quando você tecla ENTER, o \n fica no buffer de entrada (stdin) Dá para fazer um outro scanf e descartar o caractere lldo outra possibilidade é ler dois chars, ams descartar o segundo:
scanf ("%c%*c",&a);

o asterisco descarta o char lido

Link para o comentário
Compartilhar em outros sites

  • 0

já arrumei

o erro era esse

if ((b[1]=='g')&&(b[2]=='r')&&(b[3]=='e')&&(b[4]=='m')&&(b[5]=='i')&&(b[6]=='o'))
o certo é assim:
if ((b[0]=='g')&&(b[1]=='r')&&(b[2]=='e')&&(b[3]=='m')&&(b[4]=='i')&&(b[5]=='o'))

Editado por cristiang goettert
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...