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.
« Blog
 
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: enviotp@gmail.com
En AS.: PROG1 2016(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 Noviembre 2017 Ver mes siguiente
DOLUMAMIJUVISA
1234
567891011
12131415161718
19202122232425
2627282930
TÓPICOS
» COMO SE EVALUA (2)
» COMUNICADOS (17)
» EVALUACIONES (3)
» Información Tecnológica (91)
» LENGUAJE C (23)
» PROGRAMA (2)
» TEORIA (10)
» Trabajos prácticos (8)
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
» 03- Datos y tipos de datos
» EE UU recurre a una gran conspiración para minar la privacidad en Internet
» McAfee reveló un masivo pero silencioso ataque informático
» Por qué el jefe de seguridad tiene razón
» Seguridad en el aire
» Software gratis: los programas que no deben faltar en la PC
» 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