06/04/2015, 10:04
|
Usuario no validado | | Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años, 1 mes Puntos: 5 | |
Qué hacer para que mi programa vuelva al menú anterior y siga ejecutandose Hola,
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:
#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");
}
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.
Espero que me ayuden, saludos a todos y gracias!. |