Tutoriales de informática - Abrirllave.com

Abrirllave.com

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:

Colores de un semáforo
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:

Visualización en pantalla del programa Color de un semáforo, resuelto en lenguaje C.

Al introducir un número no asociado a ningún color, se podrá ver:

Visualización en pantalla del programa Color de un semáforo, mostrándose error.

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;
}

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;
}