1 2 3 4 5 6 7 8 9 10 -------------------------------------------- Resultado 1| 1 X 1 2 1 X 2 1 2 2 Resultado 2| X X 1 1 X X 2 2 2 2 Resultado 3| 2 X X X 1 1 X X 1 2 Resultado 4| X 1 1 X 2 X 2 2 X 1 Resultado 5| 1 X 2 2 1 X 1 2 2 2 Resultado 6| 2 X 2 X 1 X X X 2 2 Resultado 7| X 1 1 X 2 1 2 1 2 1 Resultado 8| X X 2 2 X 2 X X 1 1 Resultado 9| 2 2 1 2 X 2 2 X X 2 Resultado 10| X 1 2 2 X 2 X X 2 2 Resultado 11| 2 X 2 X 2 1 X X 1 1 Resultado 12| 2 2 X X X 2 2 X 2 2 Resultado 13| 1 1 1 X 1 X 1 2 2 X Resultado 14| 1 1 1 2 2 1 X 1 X 1 Resultado 15| 2 2 X 1 X 1 2 2 X X
/* Este programa muestra quinielas de quince entradas en pantalla. Es un ejemplo de aplicación del programa Núcleo, y muestra bastantes detalles interesantes. Resulta excesivamente farragoso (léase poco elegante) porque está hecho sin funciones, que le darían un aspecto mucho más agradable. Véanse los ejercicios posteriores, que reducen mucho el código empleado y aportan la misma funcionalidad. */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<ctype.h> /* Para utilizar toupper() */ /* DECLARACIONES DEL PROGRAMA NUCLEO */ int fin; /* Control de iteración del programa */ char instruccion; /* Dada por el usuario */ char menu[80]; /* Que muestra el programa */ char opcionesvalidas[80]; /* Que admite el programa */ /* DECLARACIONES ESPECIFICAS DE ESTE PROGRAMA */ /* Todo está preparado para más quinielas. La verdadera limitación */ /* es el número de columnas de pantalla disponibles. */ #define MAXQUINIELAS 10 #define NUM_PARTIDOS 15 int numquinielas = 0; /* Número de quinielas que se desean */ int i, j, k; /* Indices para generar las quinielas */ int main(void) { /* INICIACIONES - ADECUACION DE NUCLEO A ESTA APLICACION */ fin = 0; /* Acabamos de arrancar, no hay que salir */ strcpy(menu,"A)cerca, I)ndicar, M)ostrar, S)alir"); strcpy(opcionesvalidas,"AIMS"); /* OPCIONES ADMISIBLES */ srand(clock()); do { /* TOMAR UNA INSTRUCCION */ do { puts(menu); scanf("%c%*c",&instruccion); instruccion=toupper(instruccion); } while (!strchr(opcionesvalidas,instruccion)); /* PROCESAR UNA INSTRUCCION */ switch(instruccion) { case 'A': { puts("Acerca de Quini .- Este programa sirve para"); puts("escribir quinielas (pleno al 15). Por tanto,"); puts("el programa permite I) ndicar el número de"); puts("quinielas deseadas, M) ostrar las quinielas"); puts("solicitadas y S) alir de programa. El número"); printf("máximo de quinielas es %d\n\n",MAXQUINIELAS); } break; case 'I': { do { printf("¿Cuántas quinielas desea (1 < n < %d) ?:",MAXQUINIELAS); scanf("%d%*c", &numquinielas); } while (numquinielas < 1 || numquinielas > MAXQUINIELAS); } break; case 'M': { if (numquinielas < 1 || numquinielas > MAXQUINIELAS) { printf("Por favor, I)ndique el número de quinielas que desea.\n\n"); } else { printf("\nSe han solicitado %d quinielas:\n\n",numquinielas); printf(" "); for (i=0; i < numquinielas; i++) printf("%3d",i+1); printf("\n"); printf("--------------"); for (i=0; i < numquinielas; i++) printf("---"); printf("\n"); for(i=0; i < NUM_PARTIDOS; i++) { printf("Resultado %2d| ",i+1); for(j=0; j < numquinielas; j++) switch(rand() % 3) { case 0: printf(" 1"); break; case 1: printf(" X"); break; case 2: printf(" 2"); break; } printf("\n"); } printf("\n"); } } break; case 'S': { fin = 1; puts("\n\nFin de Programa.\n"); } break; } } while (!fin); /* INSTRUCCIONES FINALES */ puts("\n\nThat's all folks!\n"); } /* RESULTADO A)cerca, I)ndicar, M)ostrar, S)alir a Acerca de Quini .- Este programa sirve para escribir quinielas (pleno al 15). Por tanto, el programa permite I) ndicar el número de quinielas deseadas, M) ostrar las quinielas solicitadas y S) alir de programa. El número máximo de quinielas es 10 A)cerca, I)ndicar, M)ostrar, S)alir i ¿Cuántas quinielas desea (1 < n < 10) ?:10 A)cerca, I)ndicar, M)ostrar, S)alir m Se han solicitado 10 quinielas: 1 2 3 4 5 6 7 8 9 10 -------------------------------------------- Resultado 1| 1 X 1 2 1 X 2 1 2 2 Resultado 2| X X 1 1 X X 2 2 2 2 Resultado 3| 2 X X X 1 1 X X 1 2 Resultado 4| X 1 1 X 2 X 2 2 X 1 Resultado 5| 1 X 2 2 1 X 1 2 2 2 Resultado 6| 2 X 2 X 1 X X X 2 2 Resultado 7| X 1 1 X 2 1 2 1 2 1 Resultado 8| X X 2 2 X 2 X X 1 1 Resultado 9| 2 2 1 2 X 2 2 X X 2 Resultado 10| X 1 2 2 X 2 X X 2 2 Resultado 11| 2 X 2 X 2 1 X X 1 1 Resultado 12| 2 2 X X X 2 2 X 2 2 Resultado 13| 1 1 1 X 1 X 1 2 2 X Resultado 14| 1 1 1 2 2 1 X 1 X 1 Resultado 15| 2 2 X 1 X 1 2 2 X X A)cerca, I)ndicar, M)ostrar, S)alir s Fin de Programa. That's all folks! */
srand()
para iniciar la serie de números aleatorios, y de
rand()
para generar un número aleatorio para cada partido. De este modo los resultados son equiprobables, sin tener en cuenta para nada la historia anterior u otras circunstancias pertinentes. El formato obtenido en pantalla coincide con los resultados solicitados; queda sin embargo por comprobar lo que pasa ante la introducción de instrucciones marcadamente incorrectas (inserción de múltiples letras en lugar de una sola, inserción de letras en lugar de números etc).