Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - javierdieguez

#1
podéis colgarme el código?
#2
Buenas, llevo ya rato intentando y lo único que sé es sacar el código de este juego pero para que me diga los errores y los aciertos. Esto lo hemos hecho un amigo y yo pero no es lo que especificaba el enunciado:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CIFRAS 4
   
int comprobarLetra(char a,char combinacion[]);
int main()

{
time_t t;
 
int i,j,azar,intentos,colocadas,descolocadas,repetida,jugar,ola;
char num[6]={'A','B','C','D','E','F'};
char combinacion[CIFRAS]={' ',' ',' ',' '}; // 5 6 4 7
char jugada[CIFRAS]={' ',' ',' ',' '};
char volver_jugar;
 

jugar=intentos=repetida=azar=0;
 
srand((unsigned)time(&t));
 
   for(i=0;i<4;i++)
   {
       do
       {   azar=rand()%5;
           /*metemos la letra en el array*/
           /*comprobamos que no se repita, y en caso de repetirse, sobreescribiremos esa letra, por eso no salimos del do...while, para que la "i" siga valiendo lo mismo y estemos sobreescribiendo en la misma posición*/
           repetida=comprobarLetra(letra[azar],combinacion);
           combinacion=letra[azar];
       }while (repetida==1);
 
   }
 
   printf("\nLa combinación aleatoria es: ");
   for(j=0;j<CIFRAS;j++) printf("%c ",combinacion[j]);
   printf("\n\nIntroduce una letra por posicion, de la A a la F");
 
   do
   {
   for(j=0;j<CIFRAS;j++)
   {
   printf("\nLetra %d: ",j+1);
   scanf("%c",&jugada[j]);
   fflush(stdin);
   }
   intentos++;
 
   colocadas=0;
   descolocadas=0;
   for (i=0;i<CIFRAS;i++)
   {
   for (j=0;j<CIFRAS;j++)
   {
   if (combinacion==jugada[j])
   if (i==j) colocadas++;
   else
    descolocadas++;
   }
   }
 
   printf("\nTu jugada es: ");
   for(i=0;i<CIFRAS;i++) printf("%c ",jugada);
   printf("LETRAS BIEN COLOCADAS: %d] [LETRAS MAL COLOCADAS: %d] >>>>>>>",colocadas,descolocadas);
   if(colocadas==4) 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') jugar=1;
   else jugar=0;
   }
   }while (colocadas<CIFRAS && jugar==1);
 
 
   system("pause");
 
 
   return 0;
}

int comprobarLetra(char a,char combinacion[]){
     int i,j,repetida=0;
     for(i=0;i<4;i++) //Recorremos cada elemento del array (EMPIEZAN POR 0!)
     {         
                if(combinacion==a)
                {
                       repetida=1;
                }
     }
     return (repetida);
}


El enunciado al que recalco es el siguiente y hace mencion a colores cuando se acierta o se falla:

2. Programa en C el juego ADIVINA COMBINACIÓN, este consiste en generar  3 dígitos aleatorios del 0 al 9 y almacenar cada uno de ellos en una cadena. El jugador intentará adivinar los 3 dígitos introduciendo los valores en sus supuestas posiciones, dispondrá de 4 oportunidades para adivinar la combinación, el programa le responderá en cada oportunidad con una pista por pantalla indicando:
Verde: Acierta valor y posición
Amarillo: Acierta valor pero no en la posición correcta
Rojo: No acierta ningún valor.

Por ejemplo, si la generación aleatoria es 5-6-8

Jugador introduce valores:
1 2 5
rojo rojo amarillo

Jugador introduce valores:
5 2 6
verde rojo amarillo

Jugador introduce valores:
5 6 8
verde verde verde
Acierta combinación en tres jugadas. Adios.

Notas:     
Se debe usar una función aleatorio para generación de aleatorios (no procedimiento), los valores del usuario se leen en el procedimiento leer_combinación, se compararán con la cadena que contiene los valores aleatorios en la función compara (esta funcion muestra las pistas, gestiona los aciertos para el fin de programa)

int aleatorio(); (0.5p)
void leer_combinacion(int *v1,int *v2,int *v3);(0.5p)
int compara (int v1,int v2,int v3, char cadena[]);(1.5p)
main();(0.5p)



POR FAVOR, tenemos mi clase este examen mañana y no sabes como sacarlo, seguro que alguno de vosotros lo habréis hecho, muchas gracias!