marco_g-cs
Power Member
tenhu um trabalho de Fim de 10º pa fazer e tou encravado com isto!
basicamente o programa é:
temos uma chave de quatro numeros de 0 até 9 que o pc vai gerar , e vai ser armazenada num vector. vai ser pedido ao utilizador que insira uma chave pa tentar adivinhar qual é a chave gerada pelo pc. nos temos de ir dando pistas, dizer quantos numeros estao correctos na posiçao correcta e quantos numeros tao correctos na posiçao errada e quantos estao totalmente errados comparando com a chave gerada pelo pc. e o jugador tem 10 tentativas e o programa deve avizar o utilizador de quantas oportunidades tem para chegar a chave mestra( as 10 tentativas ).
o erro que me dá é com os IF's! nao chega a contar quantos números certos na posição certra ,quantos números certos na posição errada e os errados .( e por isto a correr 10 vezes caso o utilizador não acerte na chave_gerada)
tudo o que fiz ta aqui ->
a amarelo ta a parte em que tou encravado
a parte de fazer o ciclo correr 10 vezes e mostrar quantos numeros ha na posiçao certa
AJUDA PF
toda a ajuda é bem vinda!
obrigado
cumps
basicamente o programa é:
temos uma chave de quatro numeros de 0 até 9 que o pc vai gerar , e vai ser armazenada num vector. vai ser pedido ao utilizador que insira uma chave pa tentar adivinhar qual é a chave gerada pelo pc. nos temos de ir dando pistas, dizer quantos numeros estao correctos na posiçao correcta e quantos numeros tao correctos na posiçao errada e quantos estao totalmente errados comparando com a chave gerada pelo pc. e o jugador tem 10 tentativas e o programa deve avizar o utilizador de quantas oportunidades tem para chegar a chave mestra( as 10 tentativas ).
o erro que me dá é com os IF's! nao chega a contar quantos números certos na posição certra ,quantos números certos na posição errada e os errados .( e por isto a correr 10 vezes caso o utilizador não acerte na chave_gerada)
tudo o que fiz ta aqui ->
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#include <time.h>
typedef struct
{
char nick[30];
int idade;
}dados_utilizador;
typedef struct
{
int dia;
char mes[12];
int ano;
}data;
void utilizador(dados_utilizador *ptr)
{
printf("\n\n\n\n\n\t\t\tinsira o seu nick name -> ");
gets(ptr->nick);
printf("\t\t\tinsira a sua idade -> ");
scanf("%d", ptr->idade);
}
void ler_data(data *ptr)
{
printf("data :\n");
printf("dia->");
scanf("%d", &ptr-> dia);
printf("mes->");
scanf(" %s", ptr-> mes);
printf("ano->");
scanf("%d", &ptr-> ano);
}
int gerador()
{
int chave;
randomize();
chave=random(10);
return chave;
}
int inserxao_chave()
{
int chave_inserida;
do
{
scanf("%d", &chave_inserida);
}while((chave_inserida>9)||(chave_inserida<0));
return chave_inserida;
}
void main()
{
int i, j; /* variaveis utilizadas para contadores*/
int chave_gerada[4];
int chave_inserida[4];
int c_correct;
int c_pos_incorrect;
int c_errados;
dados_utilizador jogador[1];
data hoje[1];
utilizador(&jogador[0]);
ler_data(&hoje[0]);
clrscr();
/* esta parte faz com que nao haja repetiçoes de numeros no vector de numeros gerados*/
chave_gerada[0]= gerador();
do
{
chave_gerada[1]= gerador();
}while(chave_gerada[1]==chave_gerada[0]);
do
{
chave_gerada[2]= gerador();
}while((chave_gerada[2]==chave_gerada[0])||(chave_gerada[2]==chave_gerada[1]));
do
{
chave_gerada[3]= gerador();
}while((chave_gerada[3]==chave_gerada[0])||(chave_gerada[3]==chave_gerada[1])||(chave_gerada[3]==chave_gerada[2]));
clrscr();
for(i=0;i<4;i++)
printf("%d", chave_gerada);
/* esta parte acaba aqui */
for(i=0;i<4;i++) /*este ciclo faz com que sejam inseridos 4 numeros*/
chave_inserida=inserxao_chave();
if((chave_inserida[0]==chave_gerada[0])&&(chave_inserida[1]==chave_gerada[1])&&(chave_inserida[2]==chave_gerada[2])&&(chave_inserida[3]==chave_gerada[3]))
printf(" Ganhou o JOGO ");
else
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
c_correct=0;
c_pos_incorrect=0;
c_errados=0;
if((chave_gerada==chave_inserida[j])&&(i==j))
{
c_correct=c_correct+1;
}
else
{
if((chave_gerada==chave_inserida[j])&&(i!=j))
{
c_pos_incorrect=c_pos_incorrect+1;
}
if((chave_gerada!=chave_gerada[j])&&(i!=j))
{
c_errados=c_errados+1;
}
}
}
printf("tem %d numeros corectos na posicao correcta\n", c_correct);
printf("tem %d numeros correctos na posicao errada\n", c_pos_incorrect);
printf("tem %d numeros incorrectos\n", c_errados);
}
getch();
}
a amarelo ta a parte em que tou encravado
a parte de fazer o ciclo correr 10 vezes e mostrar quantos numeros ha na posiçao certa
AJUDA PF
toda a ajuda é bem vinda!
obrigado
cumps