Ir ao conteúdo
  • Cadastre-se
Matheus Frota

Como faço para juntar as funções desse codigo?

Recommended Posts

Queria saber como faço para juntar as funções desse codigo, eu tentei mas tava dando erro eu acho q n chamei certo. Alguem pode me ajudar?? Desde ja obrigado.

 

#include <stdio.h>   // Biblioteca Padrão de C, tem comandos básicos de entrada e saida.
#include <time.h>    // Biblioteca Usada para gerar numeros aleatórios
#include <windows.h> // Nem sei pra que serve...
#include <conio.h>   // Principal Biblioteca Grafica, tem funções como kbhit() e getch()
#include <stdlib.h>  // Usada Para Comandos System(" ");
#include <stdbool.h> // Biblioteca Usada para funções booleanas
#include <math.h>    // Biblioteca Usado para equações matematicas
#include <ctype.h>   // Para Funções de Caracteres
#include <string.h>  // Biblioteca que contém operações com strings

#define NUM_PALAVRAS 3 //Define o número de palavras no arquivo

int main();
void palavra_aleat();
void espaco_palavra();
void cabecalho(int a);
int digitar_letra();
void checar_letra();
void play_again(int a,int b,char *c,char d);


int i,j,
    tam,
    index_word,
    ne,
    na;
    
char palavra[20],
     espaco[20],
     letra;
char alfabeto[]={"abcdefghijklmnopqrstuvwxyz"};         
    

void palavra_aleat()
{
     FILE *fp; //Ponteiro de arquivo


    fp = fopen("lista.txt", "r"); //Abre o arquivo
    if(fp) //Se arquivo existir
    {
        srand(time(NULL)); //Pega a semente do número randômico
        index_word = rand()%NUM_PALAVRAS; //Gera o número da palavra (index)
        for(i=0, j=0; j<index_word; i++) //Enquanto não achar o index
        {
            if(fgetc(fp) == '\n') //Se achar próxima palavra
                j++; //Passa para o próximo index;
            /** Enquanto isso o ponteiro 'fp' armazena em si mesmo a posição do arquivo
            que é navegada por 'fgetc()'. A cada consulta de caractere a posição do arquivo é passada pra frente **/
        }
    }
    else //Se não achar arqquivo
    {
        printf("Lista nao encontrada.\n");
        fclose(fp); //destrói o ponteiro
    }
    
    do
    {
        i++;
        tam++;
        palavra = fgetc(fp); //Lê letra por letra
        if(palavra == '\n') //Se caractere lido for de próxima linha
        
            break; //Terminou a palavra
    } while(palavra != EOF); //Enquanto não fim do arquivo
    palavra = '\0'; //Substitui o último caractere da palavra para indicar fim de frase
}

int main()
{
    
    char palavra[10],
         tentd;
    
    int chances=6,
        acertos;
    
    cabecalho(chances);
    play_again(chances,acertos,palavra,tentd);
    return 0;
}

void espaco_palavra()
{
    for(i=0;i<=tam;i++)
    {
        espaco='_';
        printf("%c",espaco);
    }
    printf("\n");
}

void cabecalho(int a)
{
    system("cls");
    puts("\t\t\t===============");
    puts("\t\t\t JOGO DA FORCA");
    puts("\t\t\t===============");
    printf("\nVoce possui %d tentativas!",a);
    printf("\n  ÉÍÍÍÍÍÍÍÍÍÍÍ»");
    printf("\n  º           º");
    printf("\n  º           Ê");
    printf("\n  º");if(a<=5){printf("           |     ");}
    printf("\n  º");if(a<=4){printf("          (xx)   ");}
    printf("\n  º");if(a<=3){printf("         /| |\\  ");}
    printf("\n  º");if(a<=2){printf("        / | | \\ ");}
    printf("\n  º");if(a<=1){printf("          / \\   ");}            
    printf("\n  º");if(a<=0){printf("         /   \\  ");}
    printf("\n  º");
    printf("\n  Ê\n");
}

int digitar_letra(void)
{
    printf("Digite uma letra:");
    letra=getchar();
    if (letra == '\n')
    {
        return 1;
        fflush(stdin);        
    }
    
    if(!isalpha(letra))
    {
        return 1;
        letra = tolower(letra);
        return 0;        
    }
}

int checar_letra(int)
{
    for(i=0;palavra!='\0';i++)
    {
        if(letra==palavra || toupper(letra)==palavra)
        {
            espaco=letra;
        }
    }
        if(strchr(alfabeto,letra))
        {
            return 1;
        }
        if(((strchr(palavra, letra))) && ((strchr(palavra, toupper(letra)))))
        {
            ne++;
            return 0;
        }
}

void play_again(int a,int b,char *c,char d)
{
    if(a==0)
    {
        setbuf(stdin,NULL);
        system("cls");
        puts("Que pena!voce perdeu!!!");
        printf("A palavra era %s",c);
    }
    if(b!=strlen©)
    {
        setbuf(stdin,NULL);
        system("cls");
        puts("Parabens!voce venceu!!!");
    }
    puts("Deseja jogar novamente(S/N)?\n=>");
    d=getchar();
}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

 

Não dei uma olhada detalhada no seu código, mas vamos lá . . .

 

 

- windows.h - é uma biblioteca para a utilização de funções que fazem parte da biblioteca padrão de desenvolvimento para o sistema Windows, no meu caso ainda não comecei a estudá-la e acho que nem mesmo vou ( por hora ), uso Linux!

 

- conio.h - com relação ao Windows, mesmo para está biblioteca, um dos usos mais comuns que vejo para está biblioteca envolve uma personalização da interface ( principalmente cores ) do console no qual o programa é executado, mas pelo que sei está biblioteca está obsoleta, aconselho a não usá-la.

 

 

- |130| error: conflicting types for ‘checar_letra’ - no inicio do programa você declarou o protótipo da função como “void” e nesta linha na declaração da função ela é do tipo “ int ”

 

- |130| error: parameter name omitted| - aqui você colocou “ int ” como se a função fosse receber um parâmetro, mas esqueceu de nomear tal parâmetro, caso este parâmetro tenha alguma função basta apenas por o nome, caso contrario o correto para está função poderia ser: void checar_letra ( void )

 

 

- Os dois erros seguintes estão relacionados ao fato de você ter feito: if ( b != strlen© ), pois com relação aos nomes dos identificadores em C, não é permitido o uso de caracteres especiais, como “ © ”

 

|159| error: stray ‘\302’ in program

 

|159| error: stray ‘\251’ in program

 

 

- Nos dois alertas seguintes - aqui você esta retornando um valor para uma função que por padrão não deveria retornar nenhum valor:

 

|146| warning: ‘return’ with a value, in function returning void

 

|141| warning: ‘return’ with a value, in function returning void

 

 

- |150| warning: parameter ‘d’ set but not used – a variável usada como parâmetro “d” na função foi declara mas não usada em nenhuma parte do seu programa ou mesmo da função

 

- linha 44: “ // Se não achar arquivo “ - eu acredito que o “else” nesta linha deveria aparecer a mensagem de que o arquivo não pode ser aberto caso o mesmo não existisse? Se for isto, aqui pelo menos antes de eu criar o arquivo, está mensagem não apareceu durante a execução do programa, no lugar apareceu a mensagem você venceu, com deseja jogar novamente, e com o programa fechando independentemente da resposta, acho que pelo fato de você não ter terminado o programa ainda . . .

 

- Linha 11: int main(); - Qual o objetivo?

 

 

Bom, por hora é só, tente ver se consegue executar o programa com as observações acima, e tente terminá-lo . . .

 

 

Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12

 

 

Espero ter Ajudado ! ! !

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×