Ejercicio de lenguaje C - Color de un semáforo
En la siguiente tabla se muestran los posibles colores en los que puede estar un semáforo, y sus significados asociados:
Color | Significado |
---|---|
1. Rojo |
"No pasar" |
2. Verde |
"Adelante" |
3. Amarillo |
"Precaución" |
Escribir en lenguaje C un programa que:
1º) Muestre el listado de los posibles colores en los que puede estar un semáforo, con sus números asociados.
2º) Pida por teclado el número (dato entero) asociado a un color.
3º) Muestre el significado del color seleccionado.
Nota: Si el número introducido por el usuario, no está asociado a ningún color, se mostrará el mensaje: "ERROR: <número> no está asociado a ningún color.".
En pantalla se mostrará, por ejemplo:
Al introducir un número no asociado a ningún color, se podrá ver:
Solución 1: utilizando la instrucción switch
/* Programa: Color de un semáforo (Solución 1) */
#include <conio.h>
#include <stdio.h>
int main()
{
int numero;
printf( "\n Listado de colores de un sem%cforo:", 160 );
printf( "\n\n 1. Rojo" );
printf( "\n 2. Verde" );
printf( "\n 3. Amarillo" );
printf( "\n\n Introduzca n%cmero de color: ", 163 );
scanf( "%d", &numero );
switch ( numero )
{
case 1 : printf( "\n Rojo significa: \"No pasar\"" );
break;
case 2 : printf( "\n Verde significa: \"Adelante\"" );
break;
case 3 : printf( "\n Amarillo significa: \"Precauci%cn\"", 162 );
break;
default : printf( "\n ERROR: %d, no esta asociado a ning%cn color.", numero, 163 );
}
getch(); /* Pausa */
return 0;
}
Solución 2: utilizando las instrucciones switch e if
/* Programa: Color de un semáforo (Solución 2) */
#include <conio.h>
#include <stdio.h>
#include <string.h>
int main()
{
char color[9], significado[11];
int numero;
printf( "\n Listado de colores de un sem%cforo:", 160 );
printf( "\n\n 1. Rojo" );
printf( "\n 2. Verde" );
printf( "\n 3. Amarillo" );
printf( "\n\n Introduzca n%cmero de color: ", 163 );
scanf( "%d", &numero );
switch ( numero )
{
case 1 : strcpy( color, "Rojo" );
strcpy( significado, "No pasar" );
break;
case 2 : strcpy( color, "Verde" );
strcpy( significado, "Adelante" );
break;
case 3 : strcpy( color, "Amarillo" );
strcpy( significado, "Precauci\xA2n" );
}
if ( numero >= 1 && numero <= 3 )
printf( "\n %s significa: \"%s\"", color, significado );
else
printf( "\n ERROR: %d, no esta asociado a ning%cn color.", numero, 163 );
getch(); /* Pausa */
return 0;
}
- El carácter (\xA2) se ha utilizado para mostrar el carácter con tilde (ó) del ASCII. Fíjese que, A2 es el número en hexadecimal que corresponde al número 162 en el sistema decimal.
Solución 3: anidando switch en if
/* Programa: Color de un semáforo (Solución 3) */
#include <conio.h>
#include <stdio.h>
#include <string.h>
int main()
{
char color[9], significado[11];
int numero;
printf( "\n Listado de colores de un sem%cforo:", 160 );
printf( "\n\n 1. Rojo" );
printf( "\n 2. Verde" );
printf( "\n 3. Amarillo" );
printf( "\n\n Introduzca n%cmero de color: ", 163 );
scanf( "%d", &numero );
if ( numero >= 1 && numero <= 3 )
{
switch ( numero )
{
case 1 : strcpy( color, "Rojo" );
strcpy( significado, "No pasar" );
break;
case 2 : strcpy( color, "Verde" );
strcpy( significado, "Adelante" );
break;
case 3 : strcpy( color, "Amarillo" );
strcpy( significado, "Precauci\xA2n" );
}
printf( "\n %s significa: \"%s\"", color, significado );
}
else
printf( "\n ERROR: %d, no esta asociado a ning%cn color.", numero, 163 );
getch(); /* Pausa */
return 0;
}