Ir ao conteúdo
  • Cadastre-se

C - Problema com variavel


neo8

Posts recomendados

        for(i = 0; i < strlen(palavra) - 1; i++)
            if(n == palavra[i] && n != espaco[i])
            {
                espaco[i] = n;
                cont1++;
            }
            else
                cont2++;             //  <---------------------

Boa noite!

A variável "cont2" ta sendo somada ao número de letras da palavra a cada rodada. Alguém sabe onde está o problema e como prosseguir?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@neo8      esse erro é por que para comparar um char você precisa informar a posição dele dentro da string, se no caso a string tiver apenas um caractere então a posição desse caractere é zero e se tiver mais de um então pode ser de zero ate o máximo de caracteres,   e aqui nesse trecho do seu código :

for(i = 0; i < strlen(palavra) - 1; i++)
    if(n == palavra[i] && n != espaco[i]){
        espaco[i] = n;
        cont1++;
    }
    else
        cont2++;    
    

você precisa colocar assim :

for(i = 0; i < strlen(palavra) - 1; i++)
    if(n[0] == palavra[i] && n[0] != espaco[i]){
        espaco[i] = n[0];
        cont1++;
    }
    else
        cont2++;    

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010 Não, só é necessário usar colchetes [ ] e indicar posição em vetores, variáveis normais podem ser acessadas usando apenas seu nome sem colchetes, e a variável n no programa dele foi declarada como uma variável comum do tipo char.

 

 

@neo8 O que seria o cont2 no seu programa? O número de vezes que a pessoa digitou uma letra errada?

 

Se é isso o problema está na lógica do seu programa, pois do jeito que está o seu programa está contando todas as vezes que a letra digitada não é igual a uma letra da palavra ou se ela já estiver sido preenchida, ou seja a palavra não contiver a letra cont2 vai ser incrementado todas as vezes, resultando que vai ser aumentado do tamanho da palavra.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

20 minutos atrás, isrnick disse:

@devair1010 Não, só é necessário usar colchetes [ ] e indicar posição em vetores, variáveis normais podem ser acessadas usando apenas seu nome sem colchetes, e a variável n no programa dele foi declarada como uma variável comum do tipo char.

 

 

@neo8 O que seria o cont2 no seu programa? O número de vezes que a pessoa digitou uma letra errada?

 

Se é isso o problema está na lógica do seu programa, pois do jeito que está o seu programa está contando todas as vezes que a letra digitada não é igual a uma letra da palavra ou se ela já estiver sido preenchida, ou seja a palavra não contiver a letra cont2 vai ser incrementado todas as vezes, resultando que vai ser aumentado do tamanho da palavra.

 

Isso! é o número de vezes em q a letra digitada não é igual a uma letra da palavra...

else if(n != palavra[i])
                cont2++;

também tentei fazer desse modo, mas continuou o mesmo problema

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Isso porque deveria ser o número de vezes em que a letra digitada não é igual a nenhuma letra da palavra...

Ou seja, soma apenas se a palavra não tiver a letra, e o usuário "chutou" errado.

 

        encontrada = 0;

        for(i = 0; i < strlen(palavra) - 1; i++)
        {
            if(n == palavra[i] && n != espaco[i])
            {
                espaco[i] = n;
                cont1++;
                encontrada = 1;
            }
            else if (n == espaco[i])
                encontrada = 1;
        }

        if (!encontrada) //Se a letra não foi encontrada na palavra
            cont2++;

 

Edit: Adicionei pra marcar como encontrada se for letra repetida.

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...