Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/04/2015, 10:50
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Qué hacer para que mi programa vuelva al menú anterior y siga ejecutandose

Hize unos cambios, creo que lo logré, me gustaría que lo probaran y me digan sus opiniones y qué cosas puedo mejorar.

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
int RepetirPrograma(void);
int MenuPrincipal(size_t TamanoArreglo);
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 liRepetirPrograma,
        laiArreglo[] = {5,8,2,3,1,4,6,9,7,10}, liElemento;

    do
    {
        //Procesamiento
        switch (MenuPrincipal(sizeof (laiArreglo) / sizeof (int)))
        {
            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));
                liRepetirPrograma = RepetirPrograma();
                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));
                liRepetirPrograma = RepetirPrograma();
                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));
                liRepetirPrograma = RepetirPrograma();
                break;
            case 4:
                break;
            case 5:
                break;
        }
    } while (liRepetirPrograma == 1);

    return 0;
}

int RepetirPrograma(void)
{
    int liRepetirPrograma;

    printf("-------------------------------------------------------------------------------\nPresione 1 para volver al men%c anterior...\n=> ", 163);
    scanf("%d", &liRepetirPrograma);

    return liRepetirPrograma;
}

int MenuPrincipal(size_t TamanoArreglo)
{
    system("cls");

    int liOpcionMenu;

    printf("NOTA: Tama%co m%cximo del conjunto: %d\n", 164, 160, TamanoArreglo);
    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);

    return liOpcionMenu;
}

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");
}