Ir ao conteúdo

Posts recomendados

Postado

Gente, fiz esse jogo de adivinhação, e preciso que ele guarde os números digitados, caso o jogador saia.

Esta dando um erro que não consigo descobrir, e tenho que apresentar amanhã,

se alguém puder ajudar agradeço.

 

 

 

#include <stdio.h>
#include <time.h>



int main(void)
{
 char url[]="char.txt";
 char ch;
 FILE *arq;
 
 printf("num: ");
 ch=getchar();
 
 arq = fopen(url, "w");
 if(arq == NULL)
  printf("Erro, nao foi possivel abrir o arquivo\n");
 else{
  fputc(ch, arq);
  fclose(arq);
 }
 
 return 0;
}

int random();
void dicas(int num, int password, int tentativas);

int main()
{
    int continuar=1,
        password,
        tentativas,
        num;

    do
    {
        system("cls || clear");
        printf("Sorteando numero entre 1 e 1000...\n");
        password = random();

        printf("Comecou! Tente adivinhar o numero!\n\n");
        tentativas = 0;

        do
        {
            tentativas++;
            printf("Tentativa %d: ", tentativas);
            scanf("%d", &num);
            dicas(num,password,tentativas);
        }
        while( num != password);

        printf("Digite 0 para sair, ou qualquer outro numero para continuar: ");
        scanf("%d", &continuar);
    }
    while(continuar);

}

int random()
{
    srand( (unsigned)time(NULL) );

    return (1 + rand()%1000);
}

void dicas(int num, int password, int tentativas)
{
    if(num > password)
                printf("O numero sorteado e menor que %d\n\n", num);
    else
        if(num < password)
            printf("O numero sorteado e maior que %d\n\n", num);
        else
            printf("Parabens! voce acertou o numero em %d tentativas!\n\n", tentativas);
}

 

Postado

Olhando por alto o principal erro é que você declarou 2 funções main, o programa em c deve ter apenas uma função main para indicar onde inicia a execução do programa. Não sei dizer se em C ainda é uma boa pratica abrir a função main com void main() ou int main(void) apesar de ambos funcionarem.

Postado

Cara esta funcionando

 

#include <stdio.h>
#include <time.h>

//int main(void)
//{
// char url[]="char.txt";
// char ch;
// FILE *arq;
//
// printf("num: ");
// ch=getchar();
//
// arq = fopen(url, "w");
// if(arq == NULL)
//  printf("Erro, nao foi possivel abrir o arquivo\n");
// else{
//  fputc(ch, arq);
//  fclose(arq);
// }
//
// return 0;
//}

int random();
void dicas(int num, int password, int tentativas);

void main()
{
    int continuar=1,
        password,
        tentativas,
        num;

    do
    {
        system("cls || clear");
        printf("Sorteando numero entre 1 e 1000...\n");
        password = random();

        printf("Comecou! Tente adivinhar o numero!\n\n");
        tentativas = 0;

        do
        {
            tentativas++;
            printf("Tentativa %d: ", tentativas);
            scanf("%d", &num);
            dicas(num,password,tentativas);
        }
        while( num != password);

        printf("Digite 0 para sair, ou qualquer outro numero para continuar: ");
        scanf("%d", &continuar);
    }
    while(continuar);

}

int random()
{
    srand( (unsigned)time(NULL) );

    return (1 + rand()%1000);
}

void dicas(int num, int password, int tentativas)
{
    if(num > password)
                printf("O numero sorteado e menor que %d\n\n", num);
    else
        if(num < password)
            printf("O numero sorteado e maior que %d\n\n", num);
        else
            printf("Parabens! voce acertou o numero em %d tentativas!\n\n", tentativas);
}

Não sei o que você tentou fazer naquela função main secundaria mas deve ser algo relacionado a guardar informações da jogada como uma especie de recorde de menor tentativa, tente implementar isso agora.. faça uma função recorde ou algo parecido.

Postado

@SantosRodrigues00 Acho que você tentou testar duas ideias diferentes (só para ver se funciona), mas acabou colocando cada uma dentro de um método main. Como o @Benjamin Breeg disse, só pode ter um método main. Se você quiser testar ideias, coloque cada uma dentro de uma função e chame elas de dentro do método main.

 

Algo assim:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define limparTela system("clear")  // No Windows mude para "cls"

void escreverArquivo();

void jogarAdivinhacao();

void dicas(int numero, int senha, int tentativas);

int main() {
    // Descomente o que quer fazer
//    escreverArquivo();
//    jogarAdivinhacao();
    return 0;
}

void escreverArquivo() {
    char nomeArquivo[] = "char.txt";
    char letra = ' ';

    FILE *arquivo = NULL;

    printf("Letra: ");
    scanf(" %c", &letra);

    arquivo = fopen(nomeArquivo, "w");

    if (arquivo == NULL) {
        printf("[]: Erro ao abrir o arquivo. \n");
        return;
    }

    fputc(letra, arquivo);
    fclose(arquivo);
}

void jogarAdivinhacao() {
    int continuar = 0;
    int secreto = 0;
    int chute = 0;
    int tentativas = 0;

    srand((unsigned) time(NULL));

    do {
        limparTela;
        printf("Sorteando número [ 1..1000 ] ... \n");
        secreto = rand() % 1000 + 1;

        printf("Começou! Tente adivinhar o número. \n");
        tentativas = 0;

        do {
            tentativas += 1;
            printf("Tentativa [%i]: ", tentativas);
            scanf(" %i", &chute);
            dicas(chute, secreto, tentativas);
        } while (chute != secreto);

        printf("1 - Jogar de novo \n");
        printf("0 - Sair \n");
        printf("> ");
        scanf(" %i", &continuar);
    } while (continuar == 1);
}

void dicas(int numero, int senha, int tentativas) {
    if (numero > senha) {
        printf("O número sorteado é menor que %d. \n", numero);
    } else if (numero < senha) {
        printf("O número sorteado é maior que %d. \n", numero);
    } else {
        printf("Parabéns! voce acertou o número em %d tentativas! \n", tentativas);
    }
}

 

  • Curtir 1

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!