Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de lenguaje C - Distancia de un planeta al Sol

Sabiendo que las distancias medias de los planetas del sistema solar al Sol son:

Distancias de los planetas del sistema solar al Sol
Planeta Distancia media al Sol
(en millones de kilómetros)

1. Mercurio

59

2. Venus

108

3. Tierra

150

4. Marte

228

5. Júpiter

750

6. Saturno

1431

7. Urano

2877

8. Neptuno

4509

9. Plutón

5916

Si en lenguaje C se quiere escribir un programa que:

1º) Muestre el listado de los planetas (con sus números asociados).

2º) Pida por teclado el número (dato entero) asociado a un planeta.

3º) Muestre la distancia media al Sol, a la que se encuentra el planeta seleccionado.

Nota: Si el número introducido por el usuario, no está asociado a ningún planeta, se mostrará el mensaje: "ERROR: <número> no está asociado a ningún planeta.".

En pantalla se verá, por ejemplo:

Visualización en pantalla del programa Distancia de un planeta al Sol, resuelto en lenguaje C.

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

Visualización en pantalla del programa Distancia de un planeta al Sol, mostrándose error, resuelto en lenguaje C.

Solución 1: utilizando la instrucción switch

/* Programa: Distancia de un planeta al Sol (Solución 1) */

#include <conio.h>
#include <stdio.h>

int main()
{
    int numero;

    printf( "\n   Listado de planetas:" );
    printf( "\n\n   1. Mercurio" );
    printf( "\n   2. Venus" );
    printf( "\n   3. Tierra" );
    printf( "\n   4. Marte" );
    printf( "\n   5. J%cpiter", 163 );
    printf( "\n   6. Saturno" );
    printf( "\n   7. Urano" );
    printf( "\n   8. Neptuno" );
    printf( "\n   9. Plut%cn", 162 );
    printf( "\n\n   Introduzca n%cmero de planeta: ", 163 );

    scanf( "%d", &numero );

    switch ( numero )
    {
         case 1 : printf( "\n   Mercurio est%c a 59", 160 );
                  break;
         case 2 : printf( "\n   Venus est%c a 108", 160 );
                  break;
         case 3 : printf( "\n   Tierra est%c a 150", 160 );
                  break;
         case 4 : printf( "\n   Marte est%c a 228", 160 );
                  break;
         case 5 : printf( "\n   J%cpiter est%c a 750", 163, 160 );
                  break;
         case 6 : printf( "\n   Saturno est%c a 1431", 160 );
                  break;
         case 7 : printf( "\n   Urano est%c a 2877", 160 );
                  break;
         case 8 : printf( "\n   Neptuno est%c a 4509", 160 );
                  break;
         case 9 : printf( "\n   Plut%cn est%c a 5916", 162, 160 );
                  break;
        default : printf( "\n   ERROR: %d no est%c asociado a ning%cn planeta.", numero, 160, 163 );
    }

    getch(); /* Pausa */

    return 0;
}

Solución 2: utilizando las instrucciones switch e if

/* Programa: Distancia de un planeta al Sol (Solución 2) */

#include <conio.h>
#include <stdio.h>
#include <string.h>

int main()
{
    char planeta[9];
    int distancia, numero;

    printf( "\n   Listado de planetas:" );
    printf( "\n\n   1. Mercurio" );
    printf( "\n   2. Venus" );
    printf( "\n   3. Tierra" );
    printf( "\n   4. Marte" );
    printf( "\n   5. J%cpiter", 163 );
    printf( "\n   6. Saturno" );
    printf( "\n   7. Urano" );
    printf( "\n   8. Neptuno" );
    printf( "\n   9. Plut%cn", 162 );
    printf( "\n\n   Introduzca n%cmero de planeta: ", 163 );

    scanf( "%d", &numero );

    switch ( numero )
    {
        case 1 : strcpy( planeta, "Mercurio" );
                 distancia = 59;
                 break;
        case 2 : strcpy( planeta, "Venus" );
                 distancia = 108;
                 break;
        case 3 : strcpy( planeta, "Tierra" );
                 distancia = 150;
                 break;
        case 4 : strcpy( planeta, "Marte" );
                 distancia = 228;
                 break;
        case 5 : strcpy( planeta, "J\xA3piter" );
                 distancia = 750;
                 break;
        case 6 : strcpy( planeta, "Saturno" );
                 distancia = 1431;
                 break;
        case 7 : strcpy( planeta, "Urano" );
                 distancia = 2877;
                 break;
        case 8 : strcpy( planeta, "Neptuno" );
                 distancia = 4509;
                 break;
        case 9 : strcpy( planeta, "Plut\xA2n" );
                 distancia = 5916;
    }

    if ( numero >= 1 && numero <= 9 )
        printf( "\n   %s est%c a %d", planeta, 160, distancia );
    else
        printf( "\n   ERROR: %d no est%c asociado a ning%cn planeta.", numero, 160, 163 );

    getch(); /* Pausa */

    return 0;
}

Solución 3: anidando switch en if

/* Programa: Distancia de un planeta al Sol (Solución 3) */

#include <conio.h>
#include <stdio.h>
#include <string.h>

int main()
{
    char planeta[9];
    int distancia, numero;

    printf( "\n   Listado de planetas:" );
    printf( "\n\n   1. Mercurio" );
    printf( "\n   2. Venus" );
    printf( "\n   3. Tierra" );
    printf( "\n   4. Marte" );
    printf( "\n   5. J%cpiter", 163 );
    printf( "\n   6. Saturno" );
    printf( "\n   7. Urano" );
    printf( "\n   8. Neptuno" );
    printf( "\n   9. Plut%cn", 162 );
    printf( "\n\n   Introduzca n%cmero de planeta: ", 163 );

    scanf( "%d", &numero );

    if ( numero >= 1 && numero <= 9 )
    {
        switch ( numero )
        {
            case 1 : strcpy( planeta, "Mercurio" );
                     distancia = 59;
                     break;
            case 2 : strcpy( planeta, "Venus" );
                     distancia = 108;
                     break;
            case 3 : strcpy( planeta, "Tierra" );
                     distancia = 150;
                     break;
            case 4 : strcpy( planeta, "Marte" );
                     distancia = 228;
                     break;
            case 5 : strcpy( planeta, "J\xA3piter" );
                     distancia = 750;
                     break;
            case 6 : strcpy( planeta, "Saturno" );
                     distancia = 1431;
                     break;
            case 7 : strcpy( planeta, "Urano" );
                     distancia = 2877;
                     break;
            case 8 : strcpy( planeta, "Neptuno" );
                     distancia = 4509;
                     break;
            case 9 : strcpy( planeta, "Plut\xA2n" );
                     distancia = 5916;
        }
        printf( "\n   %s est%c a %d", planeta, 160, distancia );
    }
    else
        printf( "\n   ERROR: %d no est%c asociado a ning%cn planeta.", numero, 160, 163 );

    getch(); /* Pausa */

    return 0;
}