estoy haciendo un ejercicio de la universidad (explicado en los comentarios del programa) y me gustaría que el programa se repita. Por ejemplo, Presione 1 para volver al menú anterior y 0 para salir. Al volver al menú anterior, poder elegir otra opción y asi sucesivamente, manteniendo los valores de las variables ya que el punto del programa es ver los valores e ir jugando con ellas añadiendo y eliminando valores.
Aquí mi programa:
Código:
Pensé en un DO WHILE ó WHILE pero como el programa es tan largo, no sé si sería lo correcto, también pensé en poner el menú en una función y llamarlo en cada opción del menú, no tengo ni idea de qué sería lo mejor, nunca he hecho esto.#include <stdio.h> #include <stdlib.h> /* Tema V. Funciones 22. Escriba un programa en el cual haciendo uso de arreglos se puedan manipular conjuntos de números enteros donde se ofrezcan los siguientes servicios: a)Insertar un elemento en el conjunto. b)Eliminar un elemento del conjunto. c)Determinar si un elemento es miembro o no en el conjunto. d)Unión de conjuntos. e)Intersección de conjuntos. */ //Declaración de prototipos void MostrarConjunto(int laiArreglo[], size_t TamanoArreglo); void InsertarElemento(int liElemento, int laiArreglo[], size_t TamanoArreglo); void EliminarElemento(int liElemento, int laiArreglo[], size_t TamanoArreglo); void DeterminarExistencia(int liElemento, int laiArreglo[], size_t TamanoArreglo); int main() { //Declaración de variables int liOpcionMenu, laiArreglo[] = {5,8,2,3,1,4,6,9,7,10}, liElemento; //Entrada de datos printf("NOTA: Tama%co m%cximo del conjunto: %d\n", 164, 160, sizeof (laiArreglo) / sizeof (int)); printf("\n----------MENU-----------------------------------------------------------------"); printf("\n1. Insertar un elemento en el conjunto"); printf("\n2. Eliminar un elemento del conjunto"); printf("\n3. Determinar si un elemento es miembro o no en el conjunto"); printf("\n4. Uni%cn de conjuntos", 162); printf("\n5. Intersecci%cn de conjuntos", 162); printf("\n-------------------------------------------------------------------------------"); do { printf("\n=> "); scanf("%d", &liOpcionMenu); if (liOpcionMenu <= 0 || liOpcionMenu > 5) printf("\n\tError!, debe ingresar un valor de 1 a 5.\n"); } while (liOpcionMenu <= 0 || liOpcionMenu > 5); //Procesamiento switch (liOpcionMenu) { case 1: system("cls"); printf("1. Insertar un elemento en el conjunto"); printf("\n--------------------------------------"); printf("\nIngrese el elemento: "); scanf("%d", &liElemento); InsertarElemento(liElemento, laiArreglo, sizeof (laiArreglo) / sizeof (int)); MostrarConjunto(laiArreglo, sizeof (laiArreglo) / sizeof (int)); break; case 2: system("cls"); printf("2. Eliminar un elemento del conjunto"); printf("\n------------------------------------"); printf("\nIngrese el elemento: "); scanf("%d", &liElemento); EliminarElemento(liElemento, laiArreglo, sizeof (laiArreglo) / sizeof (int)); MostrarConjunto(laiArreglo, sizeof (laiArreglo) / sizeof (int)); break; case 3: system("cls"); printf("3. Determinar si un elemento es miembro o no en el conjunto"); printf("\n-----------------------------------------------------------"); printf("\nIngrese el elemento: "); scanf("%d", &liElemento); DeterminarExistencia(liElemento, laiArreglo, sizeof (laiArreglo) / sizeof (int)); MostrarConjunto(laiArreglo, sizeof (laiArreglo) / sizeof (int)); break; case 4: break; case 5: break; } //Salida de datos return 0; } void MostrarConjunto(int laiArreglo[], size_t TamanoArreglo) { int liContador; printf("\nCONJUNTO: "); for (liContador = 0; liContador < TamanoArreglo; liContador++) { printf("%d", laiArreglo[liContador]); if (liContador < TamanoArreglo - 1) printf(", "); } printf("\n"); } void InsertarElemento(int liElemento, int laiArreglo[], size_t TamanoArreglo) { int liContador, liCondicionElse = 0; for (liContador = 0; liContador < TamanoArreglo; liContador++) { if (laiArreglo[liContador] == 0) { laiArreglo[liContador] = liElemento; printf("\n---------------------------------------------\n| Insertado correctamente de la posici%cn %d. |\n---------------------------------------------\n", 162, liContador + 1); liCondicionElse++; return; } } if (liCondicionElse == 0) printf("\n\tAviso!, todas las posiciones estan ocupadas.\n"); } void EliminarElemento(int liElemento, int laiArreglo[], size_t TamanoArreglo) { int liContador, liCondicionElse = 0; for (liContador = 0; liContador < TamanoArreglo; liContador++) { if (laiArreglo[liContador] == liElemento) { laiArreglo[liContador] = 0; printf("\n---------------------------------------------\n| Eliminado correctamente de la posici%cn %d. |\n---------------------------------------------\n", 162, liContador + 1); liCondicionElse++; return; } } if (liCondicionElse == 0) printf("\n\tAviso!, no existe ese elemento en el conjunto.\n"); } void DeterminarExistencia(int liElemento, int laiArreglo[], size_t TamanoArreglo) { int liContador, liCondicionElse = 0; for (liContador = 0; liContador < TamanoArreglo; liContador++) { if (laiArreglo[liContador] == liElemento) { printf("\n------------------------------------------\n| Elemento encontrado en la posici%cn %d. |\n------------------------------------------\n", 162, liContador + 1); liCondicionElse++; return; } } if (liCondicionElse == 0) printf("\n\tAviso!, no existe ese elemento en el conjunto.\n"); }
Espero que me ayuden, saludos a todos y gracias!.