Ejercicio de lenguaje C - Distancia de un planeta al Sol
Sabiendo que las distancias medias de los planetas del sistema solar al Sol son:
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:
Al introducir un número no asociado a ningún planeta, se verá:
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;
}
- Los caracteres (\xA2) y (\xA3) se han utilizado, respectivamente, para mostrar los caracteres con tilde (ó) y (ú) del ASCII. Obsérvese que, A2 y A3 son los números en hexadecimal que corresponden a los números 162 y 163 en el sistema decimal.
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;
}