Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
Programación 1
¡Bienvenidos a nuestro Blog! Espero puedan disfrutarlo y aprender. Este será un contacto que podrá superar los límites de tiempo de las horas de clase: aprovéchenlo para construir algo nuevo.
04 de Junio, 2016    LENGUAJE C

Ejemplo de lenguaje C - Menú de opciones



Si en lenguaje C se quiere escribir un programa que:

1º) Muestre un menú con 4 opciones:

  • 1. Calcular el doble de un número entero.
  • 2. Calcular la mitad de un número entero.
  • 3. Calcular el cuadrado de un número entero.
  • 4. Salir.

2º) Pida por teclado la opción deseada (dato entero).

3º) Ejecute la opción del menú seleccionada.

4º) Repita los pasos 1º, 2º y 3º, mientras que, el usuario no seleccione la opción 4 (Salir) del menú.

En pantalla se verá, por ejemplo:

Visualización en pantalla del programa Menú de opciones, resuelto en lenguaje C.

Solución 1: anidando una instrucción switchen un bucle do...while

while

/* Programa: Tabla de multiplicar de un número (Solución 1) */
#include <math.h>
#include <stdio.h>
int main()
{
 int n, opcion;
 do
 {
 printf( "
 1. Calcular el doble de un n%cmero entero.", 163 );
 printf( "
 2. Calcular la mitad de un n%cmero entero.", 163 );
 printf( "
 3. Calcular el cuadrado de un n%cmero entero.", 163 );
 printf( "
 4. Salir." );
 printf( "

 Introduzca opci%cn (1-4): ", 162 );
 scanf( "%d", &opcion );
 /* Inicio del anidamiento */
 switch ( opcion )
 {
 case 1: printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 El doble de %d es %d

", n, n * 2 );
 break;
 case 2: printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 La mitad de %d es %f

", n, ( float ) n / 2 );
 break;
 case 3: printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 El cuadrado de %d es %d

", n, ( int ) pow( n, 2 ) );
 }
 /* Fin del anidamiento */
 } while ( opcion != 4 );
 return 0;
}
  • Véase que, se han realizado dos castings( float ) y ( int ), para cambiar, respectivamente, los tipos de datos de los valores resultantes de las expresiones n / 2 y pow( n, 2 ).
  • Por otra parte, fíjese que el bucle do...while iterará, mientras que, opción sea distinto del valor 4. Normalmente, en un menú, la opción de salir (opción 4 en este caso) no se debe contemplar en la alternativa múltiple, es decir, si el usuario introduce un 4, no se debe hacer nada. Pero, ¿qué ocurre si el usuario teclea un número mayor que 4 ó menor que 1? En pantalla se verá algo parecido a:
Visualización en pantalla del programa Menú de opciones, sin filtro.
  • Al introducir un número menor que 1 ó mayor que 4, se muestra de nuevo el menú. Para evitar que ocurra esto, es conveniente utilizar un filtro al leer la opción que introduce el usuario.

Solución 2: filtrando la opción introducida por el usuario

/* Programa: Menú de opciones (Solución 2) */
#include <math.h>
#include <stdio.h>
int main()
{
 int n, opcion;
 do
 {
 printf( "
 1. Calcular el doble de un n%cmero entero.", 163 );
 printf( "
 2. Calcular la mitad de un n%cmero entero.", 163 );
 printf( "
 3. Calcular el cuadrado de un n%cmero entero.", 163 );
 printf( "
 4. Salir." );
 /* Filtramos la opción elegida por el usuario */
 do
 {
 printf( "
 Introduzca opci%cn (1-4): ", 162 );
 scanf( "%d", &opcion );
 } while ( opcion < 1 || opcion > 4 );
 /* La opción sólo puede ser 1, 2, 3 ó 4 */
 switch ( opcion )
 {
 case 1: printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 El doble de %d es %d

", n, n * 2 );
 break;
 case 2: printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 La mitad de %d es %f

", n, ( float ) n / 2 );
 break;
 case 3: printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 El cuadrado de %d es %d

", n, ( int ) pow( n, 2 ) );
 }
 } while ( opcion != 4 );
 return 0;
}
  • La variable opción, también puede ser un dato de tipo carácter, en vez de tipo entero.

Solución 3: declarando la variable opcion de tipo carácter

/* Programa: Menú de opciones (Solución 3) */
#include <math.h>
#include <stdio.h>
int main()
{
 char opcion;
 int n;
 do
 {
 printf( "
 1. Calcular el doble de un n%cmero entero.", 163 );
 printf( "
 2. Calcular la mitad de un n%cmero entero.", 163 );
 printf( "
 3. Calcular el cuadrado de un n%cmero entero.", 163 );
 printf( "
 4. Salir." );
 do
 {
 printf( "
 Introduzca opci%cn (1-4): ", 162 );
 fflush( stdin );
 scanf( "%c", &opcion );
 } while ( opcion < '1' || opcion > '4' );
 switch ( opcion )
 {
 case '1': printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 El doble de %d es %d

", n, n * 2 );
 break;
 case '2': printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 La mitad de %d es %f

", n, ( float ) n / 2 );
 break;
 case '3': printf( "
 Introduzca un n%cmero entero: ", 163 );
 scanf( "%d", &n );
 printf( "
 El cuadrado de %d es %d

", n, ( int ) pow( n, 2 ) );
 }
 } while ( opcion != '4' );
 return 0;
}
Palabras claves , , , , , ,
publicado por mariof2005 a las 18:24 · Sin comentarios  ·  Recomendar
 
Más sobre este tema ·  Participar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
SOBRE MÍ
FOTO

Héctor Mario Freschinaldi

Mail: backupenviotrabajos@gmail.com
En AS.: 2021JVG PROG1 LUNES TT (su nombre y apellido)

En un mundo donde los cambios se suceden vertiginosamente, incluso los tecnológicos, es menester asimilar las nuevas tecnologías para su aplicación inmediata y su proyección a futuro.

» Ver perfil

CALENDARIO
Ver mes anterior Abril 2024 Ver mes siguiente
DOLUMAMIJUVISA
123456
78910111213
14151617181920
21222324252627
282930
TÓPICOS
» COMUNICADOS (4)
» EVALUACIONES (3)
» Información Tecnológica (86)
» LENGUAJE C (23)
» PROGRAMA (2)
» TEORIA (11)
» Trabajos de entrenamiento (8)
» TRABAJOS PR ÁCTICOS (5)
SECCIONES
» Inicio
ENLACES
» ¿Hay seguridad en lo que ponés en la WEB?
» ¡Te estoy espìando! (y colaborás conmigo)
» Los peligros de la WEB
» Otra de Facebook
» Historias del CHAT
» 1984/George Orwell
» Revistas de Informática, Tecnica y Nuevas Tecnolog
MÁS LEÍDOS
» 07 Elementos léxicos del lenguaje de programación C
» 1. Algoritmos.
» 10 aplicaciones útiles para llevar a todos lados 10 en un pendrive
» CODE BLOCKS no compila Posibles causas
» Ejemplo de lenguaje C - Menú de opciones
» METODOS DE ORDENAMIENTO
» Pseudocódigo
» 2021RESPUESTA A LOS DISTINTOS TEMAS DE LAS PREGUNTAS AL PARCIAL VIRTUAL DOMICILIARIO Y RECUPERATORIOS
» Seguridad en el aire
» TEORIA EN PDF
NUBE DE TAGS  [?]
AL MARGEN
¡Bienvenidos!
Este será un canal de comunicación entre nosotros.
Tendrá diferentes instancias dinamizadoras, y utilidades para trabajar los diferentes trabajos prácticos en diversas modalidades.
BUSCADOR
Blog   Web
SE COMENTA...
» Seguridad en el aire
2 Comentarios: uk vpn, uk vpn
FULLServices Network | Crear blog | Privacidad