Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/02/2013, 08:19
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: principiante en C, código limpio de errores

No hay mucho que decir, solo que tu algoritmo funciona pero es muy poco práctico (te basas en copiar y pegar todo el rato).

Imaginate que ahora quieres cambiar algo (ponerle que aumente los aciertos/fallos cada vez que contestas una pregunta), tendrías que cambiar cada pregunta por separado lo cual resultaría muyyy engorroso. Otros detalles como que las preguntas sean aleatorias y tal ayudaría ha hacer un programa más activo.

Una opción sería crearse una estructura Pregunta:

Código C:
Ver original
  1. typedef struct
  2. {
  3. unsigned short N_Respuestas;
  4. unsigned short Respuesta_Correcta;
  5. char* Mensaje;
  6. char** Respuestas;
  7. }Pregunta;

Y generas un array de preguntas:
Código C:
Ver original
  1. Pregunta Preguntas[9];

Y lo llenas:

Código C:
Ver original
  1. Pregunta[0].N_Respuestas = 4;
  2. Pregunta[0].Respuesta_Correcta = 1;
  3. Pregunta[0].Mensaje = "Cuantos planestas hay actualmente en el sistema solar";
  4. Pregunta[0].Respuestas =(char**) malloc (N_Respuestas);
  5.  
  6. Pregunta[0].Respustas[0] = "Ocho";
  7. Pregunta[0].Respuestas[1] = "Nueve";
  8. Pregunta[0].Respuestas[2] = "Diez";
  9. Pregunta[0].Respuestas[3] = "Siete";

Todo lo que te queda es llenar las preguntas de datos, después te creas un sistema que las procese y listo:

Código C:
Ver original
  1. // Hasta que no termine con las preguntas
  2. for (unsigned short i = 0; i < 9;i++)
  3. {
  4.      printf("Estamos en la pregunta %d : \n \n",i+1);
  5.      printf("%s",Preguntas[i].Mensaje);
  6.      
  7.      // Mostramos las respuestas
  8.  
  9.      for (unsigned short j = 0; j < Pregunta.N_Respuestas;j++)
  10.               printf("Respuesta %d : %s \n",j+1,Pregunta[i].Respuestas[j]);
  11.      
  12.     printf("Elige una opcion: \n");
  13.       scanf("%d",&respuesta);
  14.  
  15.     if (respuesta == Pregunta[i].Respuesta_Correcta)
  16.          printf("La respuesta es correcta \n");
  17.    else
  18. {
  19.         printf("La respuesta es incorrecta, la solucion era la opcion %d \n",Pregunta[i].Respuesta_Correcta);
  20. }
  21. }

Aunque parece un poco abstracto, es un sistema muy potente y flexible. Puedes añadir todas las preguntas que quieras con las opciones que necesites, tan solo necesitaras rellenar un campo de "Pregunta" (y bueno, aumentar en uno el tamaño del array y demas).

En C++ podría ser aún más potente, gracias a la magia de los constructores (podrías definir una nueva pregunta en una sola línea).