Mira a ver que te parece este código, he modificado el tuyo tal cual lo pide en el enunciado, con las funciones que pide y los parámetros que utiliza cada función.
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CIFRAS 3
int resultado[2];
char num[10]={'0','1','2','3','4','5','6','7','8','9'};
int aleatorio();
void leer_combinacion(int *v1,int *v2,int *v3);
int compara (int v1,int v2,int v3, char cadena[]);
////Función main
int main()
{
//Definiión de variables
time_t t;
int v1,v2,v3;
int i,j,azar,intentos,repetida,jugar=1,ola;
char cadena[CIFRAS];
char jugada[CIFRAS];
char volver_jugar;
intentos=repetida=azar=0;
srand((unsigned)time(&t));
//Bucle con la función aleatorio para generar la solución
for(i=0;i<CIFRAS;i++)
{
cadena[i]=num[aleatorio()];
}
printf("\nLa combinación aleatoria es: ");
for(j=0;j<CIFRAS;j++) printf("%c ",cadena[j]);
//Bucle para obtener las entradas del jugador y comprobar si son correctas.
while (jugar==1)
{
intentos++;
leer_combinacion(&v1,&v2,&v3);
printf("\nTu jugada es: ");
printf("\n%i %i %i ",v1,v2,v3);
compara(v1,v2,v3,cadena);
if(resultado[0]==CIFRAS) printf("\n\nENHORABUENA! HAS GANADO!(%d intentos)\n",intentos);
else
{
printf("\n\nOTRA PARTIDA<S/N>?");
scanf("%c",&volver_jugar);
fflush(stdin);
if (volver_jugar=='S' || volver_jugar=='s') jugar=1;
else jugar=0;
}
}
system("pause");
return 0;
}
//// Función aleatorio
int aleatorio()
{
return (rand()%10);
}
//// Función compara
int compara(int v1,int v2,int v3, char cadena[])
{
int i;
int jugada;
for (i=0;i<CIFRAS;i++)
{
if (i==0) jugada=atoi(&cadena[i])/100; else if (i==1) jugada=atoi(&cadena[i])/10; else jugada=atoi(&cadena[i]);
if (jugada==v1)
{
if (i==0) {printf("verde");resultado[0]++;} else {printf("amarillo");resultado[1]++;}
}
if (jugada==v2)
{
if (i==1) {printf("verde");resultado[0]++;} else {printf("amarillo");resultado[1]++;}
}
if (jugada==v3)
{
if (i==2) {printf("verde");resultado[0]++;} else {printf("amarillo");resultado[1]++;}
}
if (jugada!=v1 && jugada!=v2 && jugada!=v3) printf("rojo");
}
return 1;
}
//// Función leer_combinación
void leer_combinacion(int *v1,int *v2,int *v3)
{
int j;
printf("\n\nIntroduce un numero, del 0 al 9");
printf("\nNumero 1: ");
scanf("%i",v1);
printf("\nNumero 2: ");
scanf("%i",v2);
printf("\nNumero 3: ");
scanf("%i",v3);
fflush(stdin);
}