Ir ao conteúdo

Posts recomendados

Postado

Bom dia pessoal

preciso terminar meu aps de fim de semestre

 

tenho duas coisas ainda apara fazer no meu codico

 

o programa esta lendo o arquivo txt normal, porém não pega a primeira letra

no final ele ate acerta a palavra , mas não aparece a primeira letra/caractere

 

outro erro , que ainda ainda não iniciei a fazer seria o rand de palavras dentro do txt

 

lembrando que para cada função existe um arquivo txt dentro da pasta raiz do programa

 

segue o codico

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

char palavra[50];// var global

void jogo()
    {
        char tam_palavra,letra[50],lacuna[50]="_";//var local
        int vida=4,x,i,pontos=0;//var local

        printf("\n   >>>>>>>>>>>>>>>           UTFPR           <<<<<<<<<<<<<<<<");
        printf("\n   #                LINGUAGEM DE PROGRAMACAO                #\n\n\n");

        for(i=0; i<strlen(palavra); i++)//retorna o tamanho, em caracteres, de uma string
            //strlen() procura o terminador de string e calcula a distância dele ao início da string

        lacuna[i]='-';
        tam_palavra=strlen(palavra);

        printf("\n Palavra secreta: ");
        while(vida>0)
    {
        x=0;
        printf("\n %s \n",lacuna+1);
        printf("\n Digite uma letra minuscula: ");
        gets(letra);

        for(i=0; i<strlen(palavra); i++)
    {
        if(letra[0]==palavra[i])
    {
        lacuna[i]=palavra[i];
        pontos++;
        x++;
    }
    }
        if(x==0)
    {
        vida=vida-1;

        if(vida==0)
    {
            printf("\n\n voce FOI ENFORCADO!");
            printf("\n A PALAVRA ERA: %s",palavra);
        break;
    }
        else
            printf("\n RESTAM %d VIDA(S)",vida);
    }
        else
    {
        if(pontos==tam_palavra)
    {
            printf("\n\n voce GANHOU!");
            printf("\n A PALAVRA E: %s",palavra);
        break;
    }
        else
    {
            printf("\n voce ACERTOU UMA LETRA!");
    }
    }
    }
    }

void easy() //Chama nivel fácil, Animais.
    {
    FILE *fp;
    fp=fopen("facil_animais.txt","r");

    char s[50];//var local

    fgets(palavra,49,fp);

    if(fp == NULL)
    printf("Erro, nao foi possivel abrir o arquivo\n");

    fclose(fp);
    }

void mediun() // Chama nivel medio, Paises.
    {
    FILE *fp;
    fp=fopen("medio_paises.txt","r");

    char s[50];//var local

    fgets(palavra,49,fp);

    if(fp == NULL)
    printf("Erro, nao foi possivel abrir o arquivo\n");

    fclose(fp);
    }


void hard() // Chama nivel difícil, Filmes.
    {
    FILE *fp;
    fp=fopen("dificil_filmes.txt","r");

    char s[50];
    fgets(palavra,49,fp);

    if(fp == NULL)
    printf("Erro, nao foi possivel abrir o arquivo\n");

    fclose(fp);
    }

int main() // Funcao Principal.
    {
    setlocale(LC_ALL, "Portuguese");
    int opcao;
    char frase;
    printf("\n   >>>>>>>>>>>>>>>           UTFPR           <<<<<<<<<<<<<<<<");
    printf("\n   #                LINGUAGEM DE PROGRAMACAO                #");
    printf("\n   #                                                        #");
    printf("\n   #                   MENU PRINCIPAL                       #");
    printf("\n   #                                                        #");
    printf("\n   #        1 – fácil                                       #");
    printf("\n   #        2 – Medio                                       #");
    printf("\n   #        3 – difícil                                     #");
    printf("\n   #        0 – Sair                                        #");
    printf("\n   #                                                        #");
    printf("\n   #   Programador:                                         #");
    printf("\n   #   Gustavo Javorsky e Alessandro Donizetti              #");
    printf("\n   ##########################################################\n");


    printf("\n Digite um comando para prosseguir:\n");
    scanf("%d",&opcao);

    switch (opcao) //Puxa função fácil, medio ou difil (le arquivo)
    {
    case 0:
    {
        exit(0);
        break;
    }
    case 1:
    {
        printf("Dica:\n");
        printf("**ANIMAL**:\n");
        system("cls");
        easy();
        jogo();

        break;
    }
    case 2:
    {
        printf("Dica:\n");
        printf("**PAIS**:\n");
        system("cls");
        mediun();
        jogo();

        break;
    }
    case 3:
    {
        printf("Dica:\n");
        printf("**FILME**:\n");
        system("cls");
        hard();
        jogo();

        break;
    }
    default:
    {
        printf ("erro default");
        break;
    }
    }
    return 0;
}

 

Postado

Na função jogo(), troque

printf("\n %s \n",lacuna+1);

por

printf("\n %s \n",lacuna);


A variável "tam_palavra" deve ser int, apesar de funcionar bem não é uma prática boa declarar um char e usa-lo para receber um valor inteiro.

Postado
1 hora atrás, CiroboyBR disse:

Na função jogo(), troque


printf("\n %s \n",lacuna+1);

por


printf("\n %s \n",lacuna);


A variável "tam_palavra" deve ser int, apesar de funcionar bem não é uma prática boa declarar um char e usa-lo para receber um valor inteiro.

 

 

ok, valeu pela ajuda

 

deu certo---mais ou menos

 

veja o print

 

também alterei a variável TAM palavra para inteiro

image.thumb.png.91165ee88b1cad4904b8e92bb7fcbb39.pngimage.thumb.png.91165ee88b1cad4904b8e92bb7fcbb39.png

adicionado 16 minutos depois

o strlen esta pegando um caracter a mais na palavra 

seria um caracter em branco

Postado
33 minutos atrás, Alessandroequilibrio disse:

 

 

ok, valeu pela ajuda

 

deu certo---mais ou menos

 

veja o print

 

também alterei a variável TAM palavra para inteiro

image.thumb.png.91165ee88b1cad4904b8e92bb7fcbb39.pngimage.thumb.png.91165ee88b1cad4904b8e92bb7fcbb39.png

adicionado 16 minutos depois

o strlen esta pegando um caracter a mais na palavra 

seria um caracter em branco

Com certeza é isso, o problema deve estar no editor de texto que você está utilizando. Por via das dúvidas, após abrir o arquivo de texto e carregar a string, imprima ela na tela.

Postado

consertei

 

assim

 

nas funçoes 

void easy()

void medium ()

e void hard()

 

char s[50];//var local

fgets(palavra,49,fp);

 

mudei para a quantidade exta de letras de cada arquivo txt

 

tipo 

no txt fácil

tem as palvras 

gato

rato

sapo

 

ai troquei para 

 

char s[6];//var local

fgets(palavra,5,fp);

 

e deu certo

 

quando ficar pronto posto o cod

 

 

ainda falta o rand de palavras , sempre pega a mesma palavra quando incia o programa

 

 

 

 

Postado
5 horas atrás, Alessandroequilibrio disse:

char s[50];//var local

fgets(palavra,49,fp);

Vish, peço desculpas por não ter comentado isso, eu realmente mudei essa linha do fgets para 50, e só estava testando a função easy.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!