4 plantillas de menú de opciones en lenguaje C

En esta publicación te voy a mostrar algunas plantillas básicas de menús de opciones en lenguaje C los cuales podrás estudiarlos o utilizarlos en tus proyectos de programación. Si deseas ver la publicación sobre menú de opciones en lenguaje C++ lo encuentras en este enlace: https://algoritmosyalgomas.com/plantilla-de-un-menu-de-opciones-en-c/ y en Pseint aquí: 

1. Menú de opciones simple

Comenzamos con la plantilla inicial para el menú de opciones más simple de todos. Este menú consta de un título descriptivo, un conjunto de opciones entre las que no debe faltar la opción para SALIR y por último, la línea en donde se le pide al usuario que ingrese una opción. 

Ejemplo:

Título: Menu de opciones

Opciones:

  • Opcion 1
  • Opcion 2
  • Opcion 3
  • Opcion 4
  • SALIR

Texto: “Ingrese una opcion”. Inmediatamente después de imprimir este texto, se realiza la lectura de lo que el usuario introduzca.

menú de opciones
				
					// Plantilla de un Menú de Opciones

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int main()
{
    int opcion;
    char repetir = TRUE;
    
    do {
        system("cls");
        
        // Texto del menú
        printf("\n\nMenu de Opciones\n");
        printf("1. Opcion 1\n");
        printf("2. Opcion 2\n");
        printf("3. Opcion 3\n");
        printf("4. Opcion 4\n");
        printf("0. SALIR\n");
        
        printf("\nIngrese una opcion: ");
        scanf("%d", &opcion);
        
        switch (opcion) {
            case 1:
                printf("Instrucciones de la opcion 1\n");
                system("pause>nul"); // Pausa
                break;
                
            case 2:
                printf("Instrucciones de la opcion 2\n");
                system("pause>nul"); // Pausa
                break;
                
            case 3:
                printf("Instrucciones de la opcion 3\n");
                system("pause>nul"); // Pausa            
                break;
                
            case 4:
                printf("Instrucciones de la opcion 4\n");
                system("pause>nul"); // Pausa                
                break;
            
            case 0:
            	repetir = FALSE;
            	break;
        }        
    } while (repetir);
	 
    return 0;
}
				
			

2. Menú de opciones con operaciones matemáticas

En esta ocasión vamos a poner en práctica la realización de un menú de opciones en donde para cada opción se realice una operación matemática básica (opción 1: sumar, opción 2: restar, opción 3: multiplicar, opción 4: dividir y opción 5: salir).

Para ello contamos con la siguiente estructura:

Título: Menu de opciones

Opciones:

    • Sumar dos números
    • Restart dos números
    • Multiplicar dos números
    • Dividir dos números
    • SALIR

Texto para pedir ingreso por teclado de la opción deseada: “Ingrese una opcion”.

Inmediatamente después de pedir al usuario que ingrese la opción deseada, se realiza la lectura de la opción y se almacena en una variable entera.

En esta plantilla se están usando algunos caracteres especiales para darle una mejor presentación al menú de opciones. Estos caracteres especiales se llaman secuencias de escape y son una combinación del caracter back slash “\” con alguna letra:

\t: Tabulador horizontal

\n: Salto de línea

				
					// Plantilla de un Menú de Opciones

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int main()
{
    int opcion;
    char repetir = TRUE;
    
    do {
        system("cls");
        
        // Texto del menú
        printf("\n\n\t\t\tMenu de Opciones\n");
        printf("\t\t\t----------------\n");
        printf("\n\t1. Sumar dos numeros\n");
        printf("\t2. Restar dos numeros\n");
        printf("\t3. Multiplicar dos numeros\n");
        printf("\t4. Dividir dos numeros\n");
        printf("\t0. SALIR\n");
        
        printf("\n\tIngrese una opcion: ");
        scanf("%d", &opcion);
        
        int numero1, numero2;
		float resultado;
        switch (opcion) {
            case 1:
                // Instrucciones para sumar dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                resultado = numero1 + numero2;
                printf("\tResultado: %f\n", resultado);
                
                system("pause>nul");
                break;
                
            case 2:
                // Instrucciones para restar dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                resultado = numero1 - numero2;
                printf("\tResultado: %f\n", resultado);
                
                system("pause>nul");
                break;
                
            case 3:
                // Instrucciones para multiplicar dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                resultado = numero1 * numero2;
                printf("\tResultado: %f\n", resultado);
                
                system("pause>nul");
                break;
                
			case 4:
                // Instrucciones para dividir dos números
                printf("\n\tIngrese primer numero: ");
                scanf("%d", &numero1);
                
                printf("\tIngrese segundo numero: ");
                scanf("%d", &numero2);
                
                printf("\t---------------------------\n");
                
				if (numero2 == 0) {
                	printf("\tResultado: No se puede dividir por cero.\n"); 
				} else {
					resultado = numero1 / (numero2 * 1.0);
					printf("\tResultado: %f\n", resultado);
				}
                
                system("pause>nul");     
                break;
            
            case 0:
            	repetir = FALSE;
            	break;
        }        
    } while (repetir);
	 
    return 0;
}
				
			

3. Menú de opciones con llamadas a funciones

Este ejemplo es un poco más elaborado ya que se empieza a dividir el código total en otros módulos o funciones. La separación en módulos permite separar la lógica entera del programa en subprogramas más pequeños.

				
					// Plantilla de un Menú de Opciones

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

// Prototipos de las funciones
void sumar();
void restar();
void multiplicar();
void dividir();

int main()
{
    int opcion;
    char repetir = TRUE;

    do
    {
        system("cls");

        // Texto del menú que se verá cada vez
        printf("\n\n\t\t\tMenu de Opciones\n");
        printf("\t\t\t----------------\n");
        printf("\n\t1. Sumar dos numeros\n");
        printf("\t2. Restar dos numeros\n");
        printf("\t3. Multiplicar dos numeros\n");
        printf("\t4. Dividir dos numeros\n");
        printf("\t0. SALIR\n");

        printf("\n\tIngrese una opcion: ");
        scanf("%d", &opcion);

        int numero1, numero2;
        float resultado;
        switch (opcion)
        {
            case 1:
                sumar();
                break;

            case 2:
                restar();
                break;

            case 3:
                multiplicar();
                break;

            case 4:
                dividir();
                break;

            case 0:
                repetir = FALSE;
                break;
        }
    } while (repetir);

    return 0;
}

// Definiciones de las funciones
void sumar()
{
    int numero1, numero2;
    float resultado;

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");
    resultado = numero1 + numero2;
    printf("\tResultado: %f\n", resultado);

    system("pause>nul");
}

void restar()
{
    int numero1, numero2;
    float resultado;

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");
    resultado = numero1 - numero2;
    printf("\tResultado: %f\n", resultado);

    system("pause>nul");
}

void multiplicar()
{
    int numero1, numero2;
    float resultado;

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");
    resultado = numero1 * numero2;
    printf("\tResultado: %f\n", resultado);

    system("pause>nul");
}

void dividir()
{
    int numero1, numero2;
    float resultado;

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");

    if (numero2 == 0)
    {
        printf("\tResultado: No se puede dividir por cero.\n");
    }
    else
    {
        resultado = numero1 / (numero2 * 1.0);
        printf("\tResultado: %f\n", resultado);
    }

    system("pause>nul");
}
				
			

4. Menú de opciones con submenús usando funciones

Para este ejemplo se utilizan funciones para: el menú principal, los submenus y las operaciones de cada una de las opciones de los menús. Además, se puede ir navegando avanzando y retrocediendo por todas las opciones.

				
					// Plantilla de un Menú de Opciones

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define TRUE 1
#define FALSE 0

// Prototipos de las funciones
void menuPrincipal();
void menuOperacionesBasicas();
void menuOperacionesVariadas();

// Funciones del submenú Operaciones básicas
void sumar();
void restar();
void multiplicar();
void dividir();

// Funciones del submenú Operaciones variadas
void numeroDia();
void sumaPrimerosNumeros();
void factorial();
void invertirNumero4Cifras();

int main()
{
    menuPrincipal();
    return 0;
}

void menuPrincipal()
{
    int opcion;
    char repetir = TRUE;

    do
    {
        system("cls");

        printf("\n\n\t\t\tMENU PRINCIPAL\n");
        printf("\t\t\t--------------\n");
        printf("\n\t1. Operaciones basicas\n");
        printf("\t2. Operaciones variadas\n");
        printf("\t0. SALIR\n");

        printf("\n\tIngrese una opcion: ");
        scanf("%d", &opcion);

        switch (opcion)
        {
        case 1:
            menuOperacionesBasicas();
            break;

        case 2:
            menuOperacionesVariadas();
            break;

        case 0:
            repetir = FALSE;
            break;
        }
    } while (repetir);
}

// Definiciones de las funciones

void menuOperacionesBasicas()
{
    int opcion;
    char repetir = TRUE;

    do
    {
        system("cls");

        printf("\n\n\t\t\tMENU OPERACIONES BASICAS\n");
        printf("\t\t\t------------------------\n");
        printf("\n\t1. Sumar\n");
        printf("\t2. Restar\n");
        printf("\t3. Multiplicar\n");
        printf("\t4. Dividir\n");
        printf("\t0. REGRESAR\n");

        printf("\n\tIngrese una opcion: ");
        scanf("%d", &opcion);

        switch (opcion)
        {
        case 1:
            sumar();
            break;

        case 2:
            restar();
            break;

        case 3:
            multiplicar();
            break;

        case 4:
            dividir();
            break;

        case 0:
            repetir = FALSE;
            break;
        }
    } while (repetir);
}

void menuOperacionesVariadas()
{
    int opcion;
    char repetir = TRUE;

    do
    {
        system("cls");

        printf("\n\n\t\t\tMENU OPERACIONES VARIADAS\n");
        printf("\t\t\t-------------------------\n");
        printf("\n\t1. Numero y dia\n");
        printf("\t2. Suma de los primeros n numeros naturales\n");
        printf("\t3. Factorial de un numero\n");
        printf("\t4. Invertir un numero de 4 cifras\n");
        printf("\t0. REGRESAR\n");

        printf("\n\tIngrese una opcion: ");
        scanf("%d", &opcion);

        switch (opcion)
        {
        case 1:
            numeroDia();
            break;

        case 2:
            sumaPrimerosNumeros();
            break;

        case 3:
            factorial();
            break;

        case 4:
            invertirNumero4Cifras();
            break;

        case 0:
            repetir = FALSE;
            break;
        }
    } while (repetir);
}

void sumar()
{
    system("cls");
    
    int numero1, numero2;
    float resultado;

	printf("\n\tSUMA DE DOS NUMEROS");
    printf("\n\t===================\n");

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");
    resultado = numero1 + numero2;
    printf("\tResultado: %f\n", resultado);

    system("pause>nul");
}

void restar()
{
    system("cls");
    
    int numero1, numero2;
    float resultado;

    printf("\n\tRESTA DE DOS NUMEROS");
    printf("\n\t====================\n");

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");
    resultado = numero1 - numero2;
    printf("\tResultado: %f\n", resultado);

    system("pause>nul");
}

void multiplicar()
{
    system("cls");
    
    int numero1, numero2;
    float resultado;

    printf("\n\tPRODUCTO DE DOS NUMEROS");
    printf("\n\t=======================\n");

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");
    resultado = numero1 * numero2;
    printf("\tResultado: %f\n", resultado);

    system("pause>nul");
}

void dividir()
{
    system("cls");
    
    int numero1, numero2;
    float resultado;

    printf("\n\tCOCIENTE DE DOS NUMEROS");
    printf("\n\t========================\n");

    printf("\n\tIngrese primer numero: ");
    scanf("%d", &numero1);

    printf("\tIngrese segundo numero: ");
    scanf("%d", &numero2);

    printf("\t---------------------------\n");

    if (numero2 == 0)
    {
        printf("\tResultado: No se puede dividir por cero.\n");
    }
    else
    {
        resultado = numero1 / (numero2 * 1.0);
        printf("\tResultado: %f\n", resultado);
    }

    system("pause>nul");
}

void numeroDia()
{
    system("cls");

    printf("\n\tCONVIERTE NUMERO A DIA");
    printf("\n\t======================\n");

    int dia;
    printf("\tIngrese el numero de dia: ");
    scanf("%d", &dia); // 1, 2, 3, 5, 6, 7

    switch (dia) // En caso de que la variable DIA tome el valor:
    {
        case 1:
            printf("\tLunes\n");
            break;

        case 2:
            printf("\tMartes\n");
            break;

        case 3:
            printf("\tMiercoles\n");
            break;

        case 4:
            printf("\tJueves\n");
            break;

        case 5:
            printf("\tViernes\n");
            break;

        case 6:
            printf("\tSabado\n");
            break;

        case 7:
            printf("\tDomingo\n");
            break;
    }

    system("pause>nul");
}

void sumaPrimerosNumeros()
{
    system("cls");

    int n;
    int suma;

    printf("\n\tSUMA DE LOS PRIMEROS N NUMEROS");
    printf("\n\t==============================\n");

    printf("\tIngrese numero n: ");
    scanf("%d", &n);

    suma = n * (n + 1) / 2;

    printf("\tLa suma de los primeros n numeros es = %d\n", suma);

    system("pause>nul");
}

void factorial()
{
    system("cls");

    int numero, i;
    float factorial;

    printf("\n\tFACTORIAL DE UN NUMERO");
    printf("\n\t======================\n");

    printf("\tIngrese el numero: ");
    scanf("%d", &numero);

    factorial = 1;
    for (i = 1; i <= numero; i++)
    {
        factorial = factorial * i;
    }

    printf("\t%d! = %f\n", numero, factorial);

    system("pause>nul");
}

void invertirNumero4Cifras()
{
    system("cls");

    int numero;
    int u, d, c, um;
    int a, b;
    int resultado;

    printf("\n\tINVERTIR NUMERO DE 4 CIFRAS");
    printf("\n\t===========================\n");

    printf("\n\tIngrese un numero de cuatro cifras: ");
    scanf("%d", &numero); // 1234

    um = numero / 1000; // 1
    a = numero / 100;   // 12
    c = a % 10;       // 2
    b = numero / 10;    // 123
    d = b % 10;       // 3
    u = numero % 10;    // 4
    resultado = u * 1000 + d * 100 + c * 10 + um;

    printf("\t%d %d %d %d", u, d, c, um);
    printf("\tEl numero invertido es %d\n", resultado);

    system("pause>nul");
}
				
			

Pueden encontrar las plantillas de menú de opciones en lenguaje C++ en la siguiente entrada: https://algoritmosyalgomas.com/plantilla-de-un-menu-de-opciones-en-c/

¿Cómo instalar el IDE Dev C++ y la librería Conio?

IDE Dev C++ y la librería Conio

La biblioteca “Conio” (acrónimo de “console input/output”) es una biblioteca de funciones de C que se utiliza principalmente para la entrada y salida de la consola. Esta biblioteca proporciona funciones para leer y escribir caracteres, limpiar la pantalla, cambiar el color de fondo y de primer plano, etc. Se utiliza principalmente para desarrollar aplicaciones de consola en el lenguaje de programación C.

Originalmente, la biblioteca Conio fue desarrollada por Borland para su compilador C/C++ para DOS. Posteriormente, fue adoptada por otros compiladores C/C++ para DOS, como Turbo C, Microsoft C, DJGPP, etc. En la actualidad, la biblioteca Conio todavía se utiliza en IDEs como Bloodshed Dev-C++, Code::Blocks, etc.

Es importante tener en cuenta que la biblioteca Conio es específica de la plataforma y no es compatible con todos los sistemas operativos o compiladores. Además, no es una biblioteca estándar de C, por lo que no es portátil y su uso se limita a ciertos compiladores y sistemas operativos.

En este video tutorial explico detalladamente y desde cero cómo descargar, instalar y configurar el IDE Dev C++ junto con la librería conio.

ide dev c++

Herramientas necesarias

  • Librería conio: Link

Videotutorial

Código de ejemplo para probar la librería conio

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


void dibujarCuadro(int,int,int,int);
 
void dibujarCuadro(int x1,int y1,int x2,int y2)
{
    int i;
    for (i=x1+1;i<x2;i++)
    {
        gotoxy(i,y1); cputs("-") ;//linea horizontal superior
        gotoxy(i,y2); cprintf("-") ;//linea horizontal inferior
    }
 
    for (i=y1+1;i<y2;i++)
    {
        gotoxy(x1,i); cprintf("|") ;//linea vertical izquierda
        gotoxy(x2,i); cprintf("|") ;//linea vertical derecha
    }
}
 
int main(int argc, char *argv[])
{
    int n;
    clrscr();//limpia TODA LA pantalla
 
    //crea una ventana COMPLETA de fondo azul claro
    window(1,1,80,25);
    textbackground(LIGHTBLUE);//fondo de la pantalla AZUL CLARO
    clrscr();
 
    //Ventana de fondo o sombra NEGRA
    window(4,4,79,24);//crea una ventana en estar cordenadas
    textbackground(BLACK);
    clrscr();
 
    //ventana principal donde se solicitan datos
    window(2,2,77,22);//crea una ventana en estar cordenadas
    textbackground(GREEN);//fondo de la pantalla verde
    textcolor(YELLOW);//color de la letra amarillo
    clrscr();
    dibujarCuadro(1,1,75,21);//Cuadro grande
    dibujarCuadro(3,3,73,5);//Cuadro titulo
    gotoxy(16,4);
    textcolor(WHITE);//establece el color de fondo en blanco
    cprintf("Programa Que Calcula El Duplo De Un Numero");
 
    gotoxy(3,7);cprintf("Digite un numero entero: ");scanf("%d",&n);
    gotoxy(3,9);cprintf("El duplo de %d es %d",n,2*n);
    gotoxy(3,18);cprintf("Presione cualquier tecla para terminar...");
    getch();
    clrscr();
    return 0;
}
view raw
				
			

Captura de pantalla