Diferencia entre revisiones de «Curso de Programación en C/Prog124»

De WikiCabal
Ir a la navegación Ir a la búsqueda
(Prog124)
 
(Sin diferencias)

Revisión actual del 16:02 7 jun 2014

Prog124

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdbool.h>
 4 #include <stdlib.h>
 5 #include <ctype.h>
 6 
 7 enum espectro { rojo, naranja, amarillo, verde, azul, violeta };
 8 
 9 const char * colores[] = {"rojo",  "naranja", "amarillo",
10                           "verde", "azul",    "violeta"};
11 #define TAMANO 30
12 
13 int main(void)
14 {
15   char opcion[TAMANO],
16        prueba[TAMANO];
17 
18   enum espectro color;
19 
20   int i;
21 
22   bool color_se_encuentra = false;
23 
24   printf( "Ingresa un color (<Enter> para terminar): " );
25   while( fgets( opcion, TAMANO - 2, stdin ) && opcion[0] != '\n' )
26   {
27     if( *(opcion + strlen( opcion ) -1 ) != '\n' )
28     {
29       printf( "El color que entraste es demasiado largo.\n"
30               "Solo %d chars MAX\n", TAMANO - 2 );
31       exit(1);
32     }
33     else
34       *(opcion + strlen( opcion ) -1 ) = '\0'; 
35 
36     for( i = 0; i < strlen( opcion ); i++ )
37       prueba[i] = tolower( opcion[i] );
38     prueba[i] = '\0';
39 
40     for( color = rojo; color <= violeta; color++ )
41     {
42       if( strcmp( prueba, colores[color] ) == 0 )
43       {
44         color_se_encuentra = true;
45         break;
46       }
47     }
48 
49     if( color_se_encuentra )
50       switch( color )
51       {
52         case rojo     :
53              puts( "Las Rosas son de color rojo." );
54              break;
55         case naranja  :
56              puts( "Las amapolas son de color naranja." );
57              break;
58         case amarillo :
59              puts( "Las girasoles son de color amarillo." );
60              break;
61         case verde    :
62              puts( "La hierba es de color verde." );
63              break;
64         case azul     :
65              puts( "Las jacintos son de color azul." );
66              break;
67         case violeta  :
68 	     puts( "Las violetas son de color violeta." );
69              break;
70       } 
71     else
72       printf( "No conozco el color %s.\n", opcion );
73     color_se_encuentra = false;
74     printf( "Ingresa un color (<Enter> para terminar): " );
75   }
76   puts( "\n¡Adios!\n" );
77   return 0;
78 }

Resultado

[rrc@localhost CClase]$ gcc -Wall -o Prog123 Prog123.c
[rrc@localhost CClase]$ ./Prog123
Ingresa un color (<Enter> para terminar): verde
La hierba es de color verde.
Ingresa un color (<Enter> para terminar): VIOLETA
Las violetas son de color violeta.
Ingresa un color (<Enter> para terminar): AzUl
Las jacintos son de color azul.
Ingresa un color (<Enter> para terminar): AmarillO
Las girasoles son de color amarillo.
Ingresa un color (<Enter> para terminar): Purple
No conozco el color Purple.
Ingresa un color (<Enter> para terminar): 

¡Adios!

[rrc@localhost CClase]$ 

Explicación