Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/11/2015, 05:51
aoichef53
 
Fecha de Ingreso: noviembre-2015
Mensajes: 3
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Error al ejecutar programa mastermind.

Hola compañeros, soy nuevo en el foro y también en la programación (apenas 1 mes) , espero poder aprender y ayudar en lo que pueda.

Mi problema es el siguiente: al ejecutar el programa mastermind, cuando introduzco el número y pulso "enter", me dice "mastermind.exe dejó de funcionar" y se finaliza.

No sé a que puede deberse la verdad, preferiría que no me diesen la solución sino más bien pistas o el bloque en el que se puede encontrar el problema. Como digo, mis conocimientos son muy básicos, solo he tocado esta librería y aún no he hecho funciones en C (solo sobre papel).

No he terminado la comparación de resultados porque incluso cuando introduzco el número correcto se sale, la terminaré cuando resuelva este problema primero.

Muchas gracias de antemano!!

Código:

Código:
#include<stdio.h>

int d1, d2, d3, d4, a1, a2, a3, a4, intentos=10, aciertos=0, posicion=0, num, resto;

int main(void){
	
	srand(time(NULL));
	//Genera digitos aleatorios diferentes entre si, el primero distinto de 0//
	a1=1+rand()%9;
	do{
		a2=rand()%10;
	}while(a2==a1);
	do{
		a3=rand()%10;
	}while(a3==a1||a3==a2);
	do{
		a4=rand()%10;
	}while(a4==a1||a4==a2||a4==a3);
	
	//notacion para saber el numero y comprobar resultados//
printf("%d%d%d%d\n\n", a1, a2, a3, a4);

	//inicializacion de variables, entrada de datos y descomposicion del numero para comparar digito por digito.//
	//Bucle hasta que me quede sin intentos o acierte los 4 digitos//
do{
	posicion=0;
	aciertos=0;
	
	printf("numero: ");
	scanf_s("%d", num);
	d1=num/1000;
	resto=num%1000;
	d2=resto/100;
	resto=resto%100;
	d3=resto/10;
	d4=resto%10;
	
	//comparacion de resultados//
	if(d1==a1&&d2==a2&&d3==a3&&d4==a4){
		posicion=4;
		aciertos=4;
	}
	if(d1==a2||d1==a3||d1==a4){
		aciertos++;
	}
	
	.
	.
	.
	
	
	printf(" te quedan %d intentos: ",intentos);
	printf("en posicion %d: ", posicion);
	printf("aciertos %d: ", aciertos);
	intentos--;		
}while(intentos<0&&posicion>4);
	
	
if(posicion==4){
	printf("has ganado!");
}		
	getch();
	return 0;
}