Curso de Programación en C/Prog124

De WikiCabal
Saltar a: navegación, buscar

Prog124

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>
#include <ctype.h>

enum espectro { rojo, naranja, amarillo, verde, azul, violeta };

const char * colores[] = {"rojo",  "naranja", "amarillo",
                          "verde", "azul",    "violeta"};
#define TAMANO 30

int main(void)
{
  char opcion[TAMANO],
       prueba[TAMANO];

  enum espectro color;

  int i;

  bool color_se_encuentra = false;

  printf( "Ingresa un color (<Enter> para terminar): " );
  while( fgets( opcion, TAMANO - 2, stdin ) && opcion[0] != '\n' )
  {
    if( *(opcion + strlen( opcion ) -1 ) != '\n' )
    {
      printf( "El color que entraste es demasiado largo.\n"
              "Solo %d chars MAX\n", TAMANO - 2 );
      exit(1);
    }
    else
      *(opcion + strlen( opcion ) -1 ) = '\0'; 

    for( i = 0; i < strlen( opcion ); i++ )
      prueba[i] = tolower( opcion[i] );
    prueba[i] = '\0';

    for( color = rojo; color <= violeta; color++ )
    {
      if( strcmp( prueba, colores[color] ) == 0 )
      {
        color_se_encuentra = true;
        break;
      }
    }

    if( color_se_encuentra )
      switch( color )
      {
        case rojo     :
             puts( "Las Rosas son de color rojo." );
             break;
        case naranja  :
             puts( "Las amapolas son de color naranja." );
             break;
        case amarillo :
             puts( "Las girasoles son de color amarillo." );
             break;
        case verde    :
             puts( "La hierba es de color verde." );
             break;
        case azul     :
             puts( "Las jacintos son de color azul." );
             break;
        case violeta  :
	     puts( "Las violetas son de color violeta." );
             break;
      } 
    else
      printf( "No conozco el color %s.\n", opcion );
    color_se_encuentra = false;
    printf( "Ingresa un color (<Enter> para terminar): " );
  }
  puts( "\n¡Adios!\n" );
  return 0;
}

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