Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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();
}
 

Link para o comentário
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
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...