#include <stdio.h>
#include <string.h>
// Variables globales para el estado del juego
int puntajeTotal = 0;
// Matriz de disponibilidad para 5 categorías y 4 preguntas cada una (1 = Disponible, 0 = Respondida)
int disp[5][4] = {
{1, 1, 1, 1}, // Categoría 1: Tipo de datos
{1, 1, 1, 1}, // Categoría 2: Librería
{1, 1, 1, 1}, // Categoría 3: Operadores lógicos
{1, 1, 1, 1}, // Categoría 4: Operadores relacionales
{1, 1, 1, 1} // Categoría 5: Operadores aritméticos
};
void mostrarTablero() {
printf("\n=========================================================\n");
printf(" KEVIN Toala- TECNOLOGIAS DE LA INFOMACIÓN \n");
printf("=========================================================\n");
char *nombresCategorias[5] = {
"1. TIPO DE DATOS",
"2. LIBRERIAS",
"3. OPERADORES LOGICOS",
"4. OPERADORES RELACIONALES",
"5. OPERADORES ARITMETICOS"
};
for (int i = 0; i < 5; i++) {
printf("--- %s ---\n", nombresCategorias[i]);
for (int j = 0; j < 4; j++) {
int puntos = (j + 1) * 100;
printf(" [%d.%d] ", i + 1, j + 1);
if (disp[i][j] == 1) {
printf("%d Puntos\n", puntos);
} else {
printf("---\n");
}
}
}
printf(" [0] Salir del juego\n");
printf("=========================================================\n");
}
int main() {
int cat, preg;
int opcionMenu;
char respuestaTexto[50];
int respuestaNum;
do {
mostrarTablero();
printf("Selecciona la categoria (1-5) o 0 para salir: ");
scanf("%d", &opcionMenu);
if (opcionMenu == 0) {
break;
}
if (opcionMenu < 1 || opcionMenu > 5) {
printf("\nOpcion no valida. Intenta de nuevo.\n");
continue;
}
int c = opcionMenu - 1; // Índice de la categoría
printf("Selecciona el numero de pregunta (1-4): ");
scanf("%d", &preg);
if (preg < 1 || preg > 4) {
printf("\nNumero de pregunta no valido.\n");
continue;
}
int p = preg - 1; // Índice de la pregunta
if (disp[c][p] == 0) {
printf("\n¡Esa pregunta ya fue respondida! Elige otra.\n");
continue;
}
int puntosPregunta = (p + 1) * 100;
int acierto = 0;
// Evaluación de preguntas de forma directa (Pregunta y Respuesta abierta)
switch (c) {
case 1: // TIPO DE DATOS
if (p == 0) {
printf("\n[100 Puntos] ¿Cuantos bytes ocupa habitualmente un 'int' en C? R= ");
scanf("%d", &respuestaNum);
if (respuestaNum == 4) acierto = 1;
} else if (p == 1) {
printf("\n[200 Puntos] ¿Que palabra reservada se usa para un solo caracter? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "char") == 0) acierto = 1;
} else if (p == 2) {
printf("\n[300 Puntos] ¿Modificador para enteros exclusivamente positivos? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "unsigned") == 0) acierto = 1;
} else if (p == 3) {
printf("\n[400 Puntos] ¿Tipo de dato para numeros con decimales de doble precision? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "double") == 0) acierto = 1;
}
break;
case 2: // LIBRERÍAS
if (p == 0) {
printf("\n[100 Puntos] ¿Libreria estandar obligatoria (ej: nombre.h)? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "stdio.h") == 0) acierto = 1;
} else if (p == 1) {
printf("\n[200 Puntos] ¿Libreria para funciones matematicas como sqrt? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "math.h") == 0) acierto = 1;
} else if (p == 2) {
printf("\n[300 Puntos] ¿Libreria para gestion de memoria dinamica y rand()? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "stdlib.h") == 0) acierto = 1;
} else if (p == 3) {
printf("\n[400 Puntos] ¿Libreria para manejo de cadenas de texto (strings)? R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "string.h") == 0) acierto = 1;
}
break;
case 3: // OPERADORES LÓGICOS
if (p == 0) {
printf("\n[100 Puntos] Escribe el operador para el AND logico: R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "&&") == 0) acierto = 1;
} else if (p == 1) {
printf("\n[200 Puntos] Escribe el operador para el OR logico: R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "||") == 0) acierto = 1;
} else if (p == 2) {
printf("\n[300 Puntos] Escribe el operador para el NOT logico (negacion): R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "!") == 0) acierto = 1;
} else if (p == 3) {
printf("\n[400 Puntos] Si a=1 y b=0, ¿cual es el resultado entero de 'a && b'? R= ");
scanf("%d", &respuestaNum);
if (respuestaNum == 0) acierto = 1;
}
break;
case 4: // OPERADORES RELACIONALES
if (p == 0) {
printf("\n[100 Puntos] Escribe el operador relacional de igualdad estricta: R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "==") == 0) acierto = 1;
} else if (p == 1) {
printf("\n[200 Puntos] Escribe el operador para comprobar si dos valores son diferentes: R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "!=") == 0) acierto = 1;
} else if (p == 2) {
printf("\n[300 Puntos] Si x=5, ¿que evalúa la expresion 'x >= 5'? (1 para verdadero, 0 para falso) R= ");
scanf("%d", &respuestaNum);
if (respuestaNum == 1) acierto = 1;
} else if (p == 3) {
printf("\n[400 Puntos] Escribe el operador relacional de 'menor o igual que': R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "<=") == 0) acierto = 1;
}
break;
case 5: // OPERADORES ARITMÉTICOS
if (p == 0) {
printf("\n[100 Puntos] Escribe el operador aritmetico para obtener el modulo/residuo: R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "%") == 0) acierto = 1;
} else if (p == 1) {
printf("\n[200 Puntos] Si 'int res = 10 / 3;', ¿cual es el valor entero almacenado? R= ");
scanf("%d", &respuestaNum);
if (respuestaNum == 3) acierto = 1;
} else if (p == 2) {
printf("\n[300 Puntos] Escribe el operador aritmetico para multiplicar: R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "*") == 0) acierto = 1;
} else if (p == 3) {
printf("\n[400 Puntos] Escribe el operador de decremento unitario (restar 1): R= ");
scanf("%s", respuestaTexto);
if (strcmp(respuestaTexto, "--") == 0) acierto = 1;
}
break;
}
// Comprobación global del resultado
if (acierto == 1) {
printf("\n¡CORRECTO! +%d puntos.\n", puntosPregunta);
puntajeTotal += puntosPregunta;
} else {
printf("\nINCORRECTO. -%d puntos.\n", puntosPregunta);
puntajeTotal -= puntosPregunta;
}
disp[c][p] = 0; // Marcar la pregunta como respondida
printf("PUNTUACION ACTUAL: %d puntos\n", puntajeTotal);
} while(1);
printf("\nJuego terminado, Kevin. Tu puntuacion final es: %d puntos.\n", puntajeTotal);
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: