Neste seguinte programa preciso de ajuda para trocar os números de char para int.
O código é o seguinte:
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
int i;
char resposta[6],adivinha[6];
FILE *fp;
void menu()
{
printf("Bem-vindo ao jogo de adivinhar um número com 6 digitos!\n");
}
void gerador()//numero aleatorio
{
srand(time(0));
for(i=0;i<6;i++)
{
resposta[i]=rand()%10+48;
}
}
void tentativa(int y)
{
printf("Esta é a %d/7 tentativa\n\n",y);
for(i=0;i<6;i++)
{
do
{
printf("Advinha o número! %d:",i+1);
scanf("%c",&adivinha[i]);
getchar();
if((adivinha[i]=='1')||(adivinha[i]=='2')||(adivinha[i]=='3')||(adivinha[i]=='4')||(adivinha[i]=='5')||(adivinha[i]=='6')||(adivinha[i]=='7')||(adivinha[i]=='8')||(adivinha[i]=='9')||(adivinha[i]=='0'))
{
printf("");
}else
{
printf("Número inválido\nClica Enter e tenta outra vez!\n");
}
}while((adivinha[i]!='1')&&(adivinha[i]!='2')&&(adivinha[i]!='3')&&(adivinha[i]!='4')&&(adivinha[i]!='5')&&(adivinha[i]!='6')&&(adivinha[i]!='7')&&(adivinha[i]!='8')&&(adivinha[i]!='9')&&(adivinha[i]!='0'));
}
}
int check()
{
int x;
for(i=0;i<6;i++)
{
if(resposta[i]==adivinha[i])
{
printf("%c",adivinha[i]);
x++;
}
else
printf("-");
}
printf("\n");
if(x==6)
return 1;
else
return 0;
}
int main()
{
setlocale(LC_ALL,"Portuguese");
int bin=0,y,momento;
char recorde[100],nome[100];
system("color A");
menu();
gerador();
fp = fopen("Recorde.txt","r");
if(fp!=NULL)
{
fgets(recorde,100,fp);
fclose(fp);
printf("O recorde atual é %s\n",recorde);
}
fp=fopen("Recorde.txt","r");
if(fp!=NULL)
fscanf(fp,"%d",&momento);
else
momento=10000;
for(y=1;y<=7;y++)
{
tentativa(y);
bin=check();
if(bin==1)
{
printf("Parabens adivinhaste em %d tentativas\n",y);
if(y<momento)
{
printf("Bateste o record, escreve o teu nome para o registo!\n");
gets(nome);
fp = fopen("Recorde.txt","w");
fprintf(fp,"%d - %s",y,nome);
fclose(fp);
}
break;
}
}
printf("Resposta = %c%c%c%c%c%c",resposta[0],resposta[1],resposta[2],resposta[3],resposta[4],resposta[5]);
}
Fico agradecido por qualquer resposta! ❤️
Quanto mais rapido agradeço!
Olá!
Não tem muito segredo. Basicamente, será mudar a declaração dos vetores de char para int e cuidar com os scanfs e printfs, mudando o %c para %d.
Então, se não houver a necessidade de armazenar o número como um vetor de caracteres, basta usar variáveis inteiras.
No scanf, pode-se utilizar o "%d" para capturar um inteiro, e se passa como segundo parâmetro o endereço da sua variável, assim:
scanf("%d", &advinha);
Para se obter um número aleatório de seis dígitos, por outro lado, é um pouco mais complicado, pois a função rand() de C gera um número de 0 a 32768 (por aí), salvo engano. Então uma alternativa é você gerar dois números aleatórios, multiplicá-los, e tirar o resto de 1000000.