Ayuda con programacion C

Infinityz04

Bovino adolescente
#1
Buenas tengo una duda y quisiera saber si pueden ayudarme, realmente este programa nos lo deja una maestra de buenas a primeras sin enseñarnos nada y aunque he leido algunas cosas en internet nadie se hace maestro de un dia para otro, espeor puedan ayudarme les dire de lo que tengo una idea y asi podrian decirme algunas ideas por favor, no pido que me den un codigo tal cual solo pido que me den una ayudaba con algunas cosas que podria usar

21. Programar el juego de reto aritmético: mostrar n operaciones aritméticas al azar con operandos de un dígito (excepto en el cociente tratar de que sea exacta) que el usuario deberá resolver, al final indicar el total de aciertos, errores, puntuación y el tiempo en que realizó el reto. Al concursante que obtenga mayor puntuación en menor tiempo será el ganador.

Me pide que mas de una persona haga el juego asi que de entrada deben de definir las veces que se jugara, con una variable y un for para repetir el test un n numero de veces basta, el problema es que yo supongo por ejemplo:

Cada jugador hace 5 operaciones al azar en si deberia de tener al menos 20 operaciones precargadas para que no se repitan tan seguido, ejemplo defino la operacion 2+2=4 al usuario le pido la respuesta y si no es cuatro que se lo sume a un contador de errores y viceversa, ¿En donde defino y como saco los textos? Por ejemplo un amigo me dijo asigna un valor y luego por un random y yo pense en esto

no| operacion texto | resultado
1 | 2+2 | 4
2 | 7-5 | 2

En cuyo caso deberia de decirle al randon de el vector operacion jala al azar un texto
al ponerlo si el usuario no pone el valor de resultado esta mal y suma 1 al contador de errores y asi hasta que los dos juegan, y solo se evalua con un if si el valor de correcto del jugador 1 es mayor que el de dos imprimer que el gano y un else entonces el jugador 2 gano pero no se como hacer lo que arriba les expongo, ademas no se como iniciar el cronometro.

Como se daran cuenta tengo nociones de programacion y un poco de logica pero no lo suficiente y les digo realmente me gustaria poner codigo pero no tengo la mas remota idea de como plantear esto.

Muchas gracias yo se que quien me responda lo hace con todo el interes de ayudar y se le agradece de antemano, cualquier comentario o sugerencia es buena.


Tengo una idea de algo asi:

#include<stdio.h>

//Definiciones del player1


int p1res=4,p1res2=6,p1res3=9;
int p1ans,p1ans1,p1ans2;
int p1b,p1m;

//Definiciones del player2


int p2res=8,p2res2=15,p2res3=3;
int p2ans,p2ans1,p2ans2;
int p2b,p2m;



void main(){

p1b=0;
p1m=0;
p2b=0;
p2m=0;


printf("Jugador 1");

printf("\n2+2=¿?");
printf("\nLa respuesta es: ");
scanf("%d",&p1ans);

if(p1ans==p1res){
p1b=p1b+1;
}
else
p1m=p1m+1;

printf("\n3+3=¿?");
printf("\nLa respuesta es: ");
scanf("%d",&p1ans1);

if(p1ans1==p1res2){
p1b=p1b+1;
}
else
p1m=p1m+1;

printf("\n6+3=¿?");
printf("\nLa respuesta es: ");
scanf("%d",&p1ans2);

if(p1ans2==p1res3){
p1b=p1b+1;
}
else
p1m=p1m+1;

printf("\nTu aciertos son: %d",p1b);
printf("\nTu errores son: %d",p1m);



printf("\n\nJugador 2");

printf("\n12-4=¿?");
printf("\nLa respuesta es: ");
scanf("%d",&p2ans);

if(p2ans==p2res){
p2b=p2b+1;
}
else
p2m=p2m+1;

printf("\n5*3=¿?");
printf("\nLa respuesta es: ");
scanf("%d",&p2ans1);

if(p2ans1==p2res2){
p2b=p2b+1;
}
else
p2m=p2m+1;

printf("\n9/3=¿?");
printf("\nLa respuesta es: ");
scanf("%d",&p2ans2);

if(p2ans2==p2res3){
p2b=p2b+1;
}
else
p2m=p2m+1;

printf("\nTu aciertos son: %d",p2b);
printf("\nTu errores son: %d",p2m);


if(p1b>p2b){
printf("\nPlayer 1 gana!\nDado que el puntaje fue P1=%d es mayor que el P2=%d",p1b,p2b);
}
else
printf("\nPlayer 2 gana!\nDado que el puntaje fue P2=%d es mayor que el P1=%d",p2b,p2b);


}


Pero ciertamente esta muy alejado de lo que me pide mi mestra aunque funciona de cierta forma, dado que no son preguntas del todo aleatorias y no tengo como meter el cronometro......
 
#2
No se si se muy tarde pero aqui va la idea, para el tiempo (dependiendo en que sistema operativo estas hablando) usa gettimeofday

http://pubs.opengroup.org/onlinepubs/009604599/functions/gettimeofday.html (o time)

tambien necesitas un generador pseaudo aleatorio

utiliza rand

http://pubs.opengroup.org/onlinepubs/009695399/functions/rand.html

ok aqui va un numero de operaciones aleatorias

aqui necesito generar un seed utilizo time para eso


time_t t1=time(NULL);

srand((unsigned int) t1);

/* Defino 4 operaciones +, -, * Y / como 0, 1 ,2 , 3*/

int oper1, oper2;

for( i = 0 ; i < 20 ; i++) /* 20 operaciones*/
{
operacion = rand() % 4 /* utilizo la operacion modulo (residuo) , los unicos resultados posibles van del 0 al 3 */

oper1 = rand() % 10 ; /*solo operandos del 0 al 9*/
oper2 = rand() % 10 ; /*solo operandos del 0 al 9*/

switch(operacion)
{
case 0 : /* Suma */
printf(" %d + %d = %d \n", oper1, oper2, oper1+oper2);
break;

case 1 : /* Resta */
printf(" %d - %d = %d \n", oper1, oper2, oper1- oper2);
break;

case 2 : /* Multiplicacion*/
printf(" %d * %d = %d \n", oper1, oper2, oper1 *oper2);
break;
default: /*Division*/
/* aqui no podemos dividir por cero */
oper2 = rand() % 9 + 1;
printf(" %d /%d = %d \n", oper1, oper2, oper1 /oper2);
}

}

time_t t2=time(NULL);

printf("Tiempo transcurrido en sec = %d \n", t2 -t1);


de ahi te puedes dar una idea









time_t t2=time(NULL);

printf("%d seconds elapsed\n", t2-t1);
 
Arriba