Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Programa parando de funcionar

Ola, Primeiramente Feliz pascoa!!

Criei um programa baseado no jogo da forca que o instrutor passou, e escrevi o código quase exatamente como ele escreveu, mesmo assim, "jogodaforca.exe parou de funcionar"

O que eu fiz de diferente do instrutor: declarei a variável "i" fora do "for", pois estava dando um erro, e estou usando um compilador diferente, no caso o "dev c++". Mas creio que o erro possa estar no strlen ou no sprintf.

Segue o código do programa/jogo

#include <stdio.h>
#include <string.h> //importa strlen

int main()
{    
    char Palavrasecreta[20];
    sprintf(Palavrasecreta, "MELANCIA");

    int i;
    int acertou = 0;
    int enforcou = 1;

    do{
        char chute;
        scanf("%c", &chute);

        for (i = 0; i < strlen(Palavrasecreta); ++i)
        {
            if (Palavrasecreta[i] == chute)
            {
                printf("a posicao %d tem a letra %s!!\n", i);
            }
        }

    }while(!acertou && !enforcou);

}

Desculpe-me se for algum erro muito fácil, fiquei meio perdido pois maioria dos erros são barrados pelo compilador.

E agradeço desde já pelo apoio

2 respostas
solução!

Encontrei dois erros, o primeiro foi no incrementador do for, vc colocou ++i, deveria ser i++, e o segundo foi no printf dentro do for. Aquele %s não está recebendo nenhuma variável, ele precisaria de alguma coisa depois do i, no código abaixo eu removi o %s e voltou a funcionar. Para utilizar do jeito que está no seu código o printf precisaria estar parecido com alguma coisa assim

printf("a posicao %d tem a letra %d!!\n", i, chute);

Isso retornaria a posição do caractere na tabela asc2. No caso a letra m seria o 77 então ele imprimiria:

M
a posicao 0 tem a letra 77!!

Depois seria necessário converter esse 77 para a letra M, mas provavelmente nas próximas lições vai ter um jeito mais fácil de fazer isso nos próximos vídeos.

Código do professor

int main()
{
    char palavrasecreta[20];
    sprintf(palavrasecreta, "MELANCIA");

    int i;
    int acertou = 0;
    int enforcou = 1;

    do{
        char chute;
        scanf("%c", &chute);

        for (i = 0; i < strlen(palavrasecreta); i++)
        {
            if (palavrasecreta[i] == chute)
            {
                printf("a posicao %d tem a letra !!\n", i);
            }
        }

    }while(!acertou && !enforcou);

}

Oi Vinicius, feliz pascoa =)

No final de cada capitulo, você encontra um zip com o projeto pronto até aquele momento. Esse arquivo é legal de usar como comparação com o seu código. Assim fica mais facil encontrar probleminhas de sintaxe (que são bem comuns de passar) assim como os que o Vinicius encontrou.

Qualquer problema é só falar.

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software