Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jona_vip en 14 Marzo 2015, 19:24 pm



Título: Ayuda con menu en C
Publicado por: jona_vip en 14 Marzo 2015, 19:24 pm
Hola chicos soy nuevo aqui & principiante en programacion.
En el menu, al elegir la primera opcion 1.- Establecer mes de captura (mes actual) me despliega otras opciones en las que tengo que elegir del 1 al 12 un mes, ya elegido el mes me saldra un mensaje que corrobora el mes elegido (ejemplo enero). Al regresar al menu quiero que Enero me aparezca asi: 1.- Establecer mes de captura (mes actual Enero).

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

int main()
{
    void MenuPrincipal ();
int op, salir;
float ingresos, gastos, IVA, GananciaBruta, ISR, total, resultado, RetencionISR, RetencionIVA;
const char Enero , Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre;


resultado = 0.00;
ingresos = 0.00;
gastos = 0.00;
IVA = 1.16;
RetencionISR = 10; // 10% del ingreso
RetencionIVA = 10; // 10% del ingreso

do {


    printf("Menu Principal\n\n");
    printf("1.-Establecer mes de captura (mes actual es % )\n", &Enero,  Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre);
    printf("2.-Captura de Ingresos\n");
    printf("3.-Captura de gastos\n");
    printf("4.-Mostrar lista de ingresos anual\n");
    printf("5.-Mostrar lista de gastos anual\n");
    printf("6.-Calculo de impuestos anual\n");
    printf("7.-Salir\n\n");
    scanf("%i", &op);
    fflush(stdin);
    system("cls");

    switch (op){
        int op;
    case 1:

      printf("Establece el mes de Captura.\n\n");

        printf("1) Enero\n");
        printf("2) Febrero\n");
        printf("3) Marzo\n");
        printf("4) Abril\n");
        printf("5) Mayo\n");
        printf("6) Junio\n");
        printf("7) Julio\n");
        printf("8) Agosto\n");
        printf("9) Septiembre\n");
        printf("10) Octubre\n");
        printf("11) Noviembre\n");
        printf("12) Diciembre\n\n");

        printf("Elige el mes (1-12): \n");

        scanf("%i", &op);

        printf("Se ha establecido el mes de captura en % ", Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre);

        switch (op) {
    case 1:
        printf("Enero\n");
        break;
    case 2:
        printf("Febrero\n");
        break;
    case 3:
        printf("Marzo\n");
        break;
    case 4:
        printf("Abril\n");
        break;
    case 5:
        printf("Mayo\n");
        break;
    case 6:
        printf("Junio\n");
        break;
    case 7:
        printf("Julio\n");
        break;
    case 8:
        printf("Agosto\n");
        break;
    case 9:
        printf("Septiembre\n");
        break;
    case 10:
        printf("Octubre\n");
        break;
    case 11:
        printf("Noviembre\n");
        break;
    case 12:
        printf("Diciembre\n");
        break;
    default:
        printf("Mes seleccionado invalido\n");
        return 0;
        }

            system("pause");
            system("cls");
            break;
    case 2:
        printf("Calculo de impuestos anual\n\n");

        printf("Menu Principal\n\n");
    printf("1.-Establecer mes de captura %c\n", &Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre );
    printf("2.-Captura de Ingresos\n");
    printf("3.-Captura de gastos\n");
    printf("4.-Mostrar lista de ingresos anual\n");
    printf("5.-Mostrar lista de gastos anual\n");
    printf("6.-Calculo de impuestos anual\n");
    printf("7.-Salir\n");

    printf("\nOpcion: ");
    scanf("%i", &op);
    fflush(stdin);
    system("cls");

    printf("Captura de Ingresos\n");
    printf("Dame el ingreso del mes %c : \n");
    scanf("%f", &ingresos);
    fflush(stdin);
    system("pause");
    system("cls");
    break;

    case 3:
    printf("Calculo de impuestos anual\n\n");

        printf("Menu Principal\n\n");
    printf("1.-Establecer mes de captura %c\n", &Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre);
    printf("2.-Captura de Ingresos\n");
    printf("3.-Captura de gastos\n");
    printf("4.-Mostrar lista de ingresos anual\n");
    printf("5.-Mostrar lista de gastos anual\n");
    printf("6.-Calculo de impuestos anual\n");
    printf("7.-Salir\n");

    printf("\nOpcion: ");
    scanf("%i", &op);
    fflush(stdin);
    system("cls");

    printf("Captura de gastos\n");
    printf("Dame el ingreso del mes de %c : \n");
    scanf("%f", &gastos);
    fflush(stdin);
    system("pause");
    system("cls");
    break;

    case 4:
    printf("Mostrar lista de ingresos anuales.\n\n");
    printf("Enero = %f\n", ingresos);
    printf("Febrero = %f\n", ingresos);
    printf("Marzo = %f\n", ingresos);
    printf("Abril = %f\n", ingresos);
    printf("Mayo = %f\n", ingresos);
    printf("Junio = %f\n", ingresos);
    printf("Julio = %f\n", ingresos);
    printf("Agosto = %f\n", ingresos);
    printf("Septiembre = %f\n", ingresos);
    printf("Octubre = %f\n", ingresos);
    printf("Noviembre = %f\n", ingresos);
    printf("Diciembre = %f\n", ingresos);


    system("pause");
    system("cls");
    break;

    case 5:

    printf("Mostrar lista de gastos anuales.\n\n");
    printf("Enero = %f\n", gastos);
    printf("Febrero = %f\n", gastos);
    printf("Marzo = %f\n", gastos);
    printf("Abril = %f\n", gastos);
    printf("Mayo = %f\n", gastos);
    printf("Junio = %f\n", gastos);
    printf("Julio = %f\n", gastos);
    printf("Agosto = %f\n", gastos);
    printf("Septiembre = %f\n", gastos);
    printf("Octubre = %f\n", gastos);
    printf("Noviembre = %f\n", gastos);
    printf("Diciembre = %f\n", gastos);

    system("pause");
    system("cls");

    break;
    case 6:

        printf("Calculo de impuestos anuales\n\n");
        printf("***Tabla de Ingresos y Retenciones***\n\n");
        printf("Ingresos %f \n", ingresos);
        resultado = ingresos * IVA;
        printf("(+) IVA %i\n", IVA);
        printf("(=) Subtotal %i\n");
        printf("(-) Retencion ISR %i\n", RetencionISR);
        printf("(-) Retencion IVA %i\n", RetencionIVA);
        printf("(=) Total %i\n\n", resultado);
        printf("***Tabla de Ganancias***\n\n");
        printf("Ingresos %f\n");
        printf("(-) Gastos %f\n", gastos);
        printf("(=) Ganancia Bruta %f\n", GananciaBruta);
        printf("(-) ISR 20.00%% %f\n", ISR);
        printf("(=) Ganancia Neta %f\n");
        printf("***Tabla ISR***\n\n");
        printf("ISR 20.00%% %f\n");
        printf("(-) ISR retenido %i\n", RetencionISR);
        printf("(=) ISR a pagar %i\n");
        printf("***Tabla IVA***\n\n");
        printf("IVA %f\n", IVA);
        printf("(-) Gastos IVA %f\n", gastos);
        printf("(-) Retencion IVA %i\n", RetencionIVA);
        printf("(=) IVA a pagar\n");
        system("pause");

        system("cls");






    case 7:

     default:
        printf("Presione Enter Para Salir");

    }
}
while (op != 7);
    return 0;
}


Título: Re: Ayuda con menu en C
Publicado por: rir3760 en 15 Marzo 2015, 01:17 am
Lo primero que debes hacer, si no tienes uno, es conseguir un curso o libro de calidad. Recomendaciones sobre ellos las puedes consultar mediante el motor de búsqueda de los foros.

Segundo, evita el uso de fflush(stdin), las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Por ultimo para imprimir la cadena correspondiente al mes con este como un entero en el rango [1, 12] debes utilizar un array que almacene esas cadenas utilizando al mes como indice. Para explicarlo mejor un programa de ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   char *mes[] = {
  7.      NULL,
  8.      "Enero",
  9.      "Febrero",
  10.      "Marzo",
  11.      "Abril",
  12.      "Mayo",
  13.      "Junio",
  14.      "Julio",
  15.      "Agosto",
  16.      "Septiembre",
  17.      "Octubre",
  18.      "Noviembre",
  19.      "Diciembre"
  20.   };
  21.   int num;
  22.  
  23.   puts("Introduce el mes (1 .. 12):");
  24.   if (scanf("%d", &num) == 1 && num >= 1 && num <= 12)
  25.      printf("El mes no %d es %s\n", num, mes[num]);
  26.  
  27.   return EXIT_SUCCESS;
  28. }

Sin embargo si apenas empiezas con C ese tipo de programas deberías dejarlos para mas adelante cuando veas el tema de arrays y punteros.

Un saludo