Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jonny03 en 7 Diciembre 2014, 20:59 pm



Título: Programa en c++ me muestra falsos valores y no cierra
Publicado por: jonny03 en 7 Diciembre 2014, 20:59 pm
Buenas, estoy creando un programa para una tarea de programacion en c++ el problema es que me da unos pequeños problemas que hasta el momento no encuentro la solucion, lo que pasa es que cuando entro a la sección de reportes generales me deve mostrar todo el 0 pero la fila 10 me muestra valores que yo nunca ingrese, deben aparecer en 0 hasta que desde el menu principal entre en "comprar" y les de un valor.
Tambien tengo un problema que cuando en el menu principal escojo la opcion 4 para salir se va directo al menu de reportes y eso no deve pasar, llego a ustedes intentando ver si me pueden ayudar.
les dejo el codigo:
Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int menu1, menu2, menu3, bodega, mariscos, sumacompra, venta, restaventa, x, y, z, v;
    int bm[10][4];
    sumacompra=0;
    restaventa=0;
    bodega=1;
    mariscos=1;
    for(z=0; z<11; z++)
    {
        for(v=0; v<5; v++)
        {
            bm[z][v]=0;
        }
    }
    menu1=0;
    while(menu1!=4)
    {
        system("cls");
        printf("\n----------Menu principal----------");
        printf("\n\t1)Comprar\n\t2)Vender\n\t3)Reportes\n\t4)Salir");
        printf("\n\nEscoje un menu: ");
        scanf("%d",&menu1);
        if(menu1>4)
        {
            printf("\nOpcion invalida escoge otra opcion: ");
            scanf("%d",&menu1);
        }
        else
        {
            if(menu1==1)
            {
                printf("\n----------Comprar----------");
                printf("\nEn que bodega desea almacenar? (1-10)\nBodega: ");
                scanf("%d",&bodega);
                if (bodega>10)
                {
                    printf("No existe esa bodega, solo existen 10\n");
                    system("pause");
                }
                else
                {
                    printf("\nEscoja un tipo de mariscos:\n\t1)Pulpo\t\t2)Camaron\n\t3)Calamar\t4)Caracol\nOpcion: ");
                    scanf("%d",&mariscos);
                    if (mariscos>4)
                    {
                        printf("\nNo existe ese marisco");
                        system("pause");
                    }
                    else
                    {
                        printf("Cuantos Kilos? ");
                        scanf("%d",&bm[0][0]);
                        printf("Se han almacenado %d Kg\n",bm[0][0]);
                        bm[bodega][mariscos]=bm[0][0]+bm[bodega][mariscos];
                        sumacompra=bm[0][0]+sumacompra;
                        system("pause");
                    }
                }
            }
            else
            {
                if(menu1==2)
                {
                    printf("\n----------Venta----------");
                    printf("\nDe que bodega desea Comprar? (1-10) ");
                    scanf("%d",&bodega);
                    if(bodega>10)
                    {
                        printf("\nNo existe esa bodega\n");
                        system("pause");
                    }
                    else
                    {
                        printf("\n\t1)Pulpo\t\t2)Camaron\n\t3)Calamar\t4)Caracol");
                        printf("\n\nQue tipo de marisco desea comprar? ");
                        scanf("%d",&mariscos);
                        if(mariscos>4)
                        {
                            printf("\nNo existe esa opcion...\n");
                            system("pause");
                        }
                        else
                        {
                            printf("\nCuantos Kilos? ");
                            scanf("%d",&bm[0][0]);
                            printf("\nSe an restado %d Kg de la bodega\n",bm[0][0]);
                            bm[bodega][mariscos]=bm[bodega][mariscos]-bm[0][0];
                            restaventa=bm[0][0]-restaventa;
                            system("pause");
                        }
                    }
                }
                else
                {
                    if(menu1=3)
                    {
                        menu2=0;
                        while(menu2!=4)
                        {
                            menu3=0;
                            printf("\n----------Reportes----------");
                            printf("\n\n\t1)Inventario\t\t2)Ventas\n\t3)Compras\t\t4)Regresar");
                            printf("\n\nEntra en un menu: ");
                            scanf("%d",&menu2);
                            if(menu2>4)
                            {
                                printf("\nOpcion no valida\n");
                                system("pause");
                            }
                            else
                            {
                                if(menu2==1)
                                {
                                    while(menu3!=4)
                                    {
                                        printf("\n----------Inventarios----------");
                                        printf("\n\n\t1)General\t\t2)Bodega\n\t3)Marisco\t\t4)Regresar");
                                        printf("\n\nEscoje una opcion: ");
                                        scanf("%d",&menu3);
                                        if(menu3>4)
                                        {
                                            printf("\nNo existe esa opcion...\n");
                                            system("pause");
                                        }
                                        else
                                        {
                                            if(menu3==1)
                                            {
                                                printf("\nBodega\t\tPulpo\t\tCamaron\t\tCalamar\t\tCaracol\n");
                                                for(x=1; x<11; x++)
                                                {
                                                    printf("\n%d",x);
                                                    for(y=1; y<5; y++)
                                                    {
                                                        printf("\t\t%d",bm[x][y]);
                                                    }
                                                }
                                            }
                                            printf("\n");
                                            system("pause");
                                        }
                                    }
                                }
                            }
                        }
                        printf("\n");
                        system("pause");
                    }
                }
            }
        }
    }
    return 0;
}
(http://www.lawebdelprogramador.com/usr/179000/179764/5484ae4692cdf-problema1.JPG)
(http://www.lawebdelprogramador.com/usr/179000/179764/5484ae4b4e646-problema2.JPG)

Ayuda porfa!!


Título: Re: Programa en c++ me muestra falsos valores y no cierra
Publicado por: engel lex en 7 Diciembre 2014, 21:31 pm
intentaste ejecutarlo en el debugger de tu ide para revisarlo paso a paso?


Título: Re: Programa en c++ me muestra falsos valores y no cierra
Publicado por: jonny03 en 7 Diciembre 2014, 21:47 pm
intentaste ejecutarlo en el debugger de tu ide para revisarlo paso a paso?

Ya lo intente solo que en el Code Blocks me aparece la opcion bloqueada, no la puedo iniciar asi


Título: Re: Programa en c++ me muestra falsos valores y no cierra
Publicado por: engel lex en 7 Diciembre 2014, 21:58 pm
es raro que no te deje usar el debugger, deberias revisar tu configuracion...


bueno revisandolo yo tienes

linea 98
Código:
if(menu1=3)

ya no se el otro error, no me sale, tendrás que decirme los pasos cuando te salió


Título: Re: Programa en c++ me muestra falsos valores y no cierra
Publicado por: fary en 7 Diciembre 2014, 22:13 pm
Usa elseif en vez de tantos if anidados.

PD: Esto es C, no C++.


Título: Re: Programa en c++ me muestra falsos valores y no cierra
Publicado por: BitsPuke en 7 Diciembre 2014, 22:30 pm
Yo lo primero que haria es quitar los else porque entre tantas llaves te haces un lio:

Código
  1. while (menu!=4){
  2. ...
  3. if (menu!=4){ ... }
  4. if (menu==1){ ... }
  5. ...
  6. if (menu==4){ ... }
  7.  
  8. }
  9.  

Probablemente tu problema sea que has metido un if dentro de un else que no era o algo por el estilo.


Título: Re: Programa en c++ me muestra falsos valores y no cierra
Publicado por: jonny03 en 8 Diciembre 2014, 02:08 am
Muchas gracias a todos, ya lo resolvi, esta completo
dejo aqui el codigo por si alguien mas lo necesita (aun tiene un pequeño problema que cuando en "informes" entras a "compra" o "venta" y luego regresas de nuevo a "informes" e intentas entrar a "general" no lo reconoce, la solucion es precionar 4 para regresar al menu "reportes" y lo vuelves a intentar, no afecta en mucho)

Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int menu1, menu2, menu3, bodega, mariscos, sumacompra, venta, restaventa, x, y, z, v;
    int cpulpo, ccamaron, ccalamar, ccaracol, vpulpo, vcamaron, vcalamar, vcaracol;
    int bm[11][5];
    vpulpo=0; vcamaron=0; vcalamar=0; vcaracol=0;
    cpulpo=0; ccamaron=0; ccalamar=0; ccaracol=0;
    sumacompra=0;
    restaventa=0;
    bodega=1;
    mariscos=1;
    menu1=0;
    for(z=0; z<11; z++)
    {
        for(v=0; v<5; v++)
        {
            bm[z][v]=0;
        }
    }
    while(menu1!=4)
    {
        system("cls");
        printf("\n----------Menu principal-----------");
        printf("\n\t1)Comprar\n\t2)Vender\n\t3)Reportes\n\t4)Salir");
        printf("\n\nEscoje un menu: ");
        scanf("%d",&menu1);
        if(menu1>4)
        {
            printf("\nOpcion invalida escoge otra opcion: ");
            scanf("%d",&menu1);
        }
        if(menu1==1)
        {
            system("cls");
            printf("\n--------------Comprar--------------");
            printf("\nEn que bodega desea almacenar? (1-10)\nBodega: ");
            scanf("%d",&bodega);
            while(bodega>10)
            {
                printf("\nNo existe esa bodega, solo existen 10\nEn que bodega desea almacenar? (1-10)\nBodega: ");
                scanf("%d",&bodega);
            }
            printf("\nEscoja un tipo de mariscos:\n\t1)Pulpo\t\t2)Camaron\n\t3)Calamar\t4)Caracol\nOpcion: ");
            scanf("%d",&mariscos);
            while(mariscos>4)
            {
                printf("\nNo existe ese marisco\nEscoja un tipo de mariscos: ");
                scanf("%d",&mariscos);
            }
            printf("Cuantos Kilos? ");
            scanf("%d",&bm[0][0]);
            printf("Se han almacenado %d Kg\n",bm[0][0]);
            if(mariscos==1)
            {
                cpulpo=cpulpo+bm[0][0];
            }
            if(mariscos==2)
            {
                ccamaron=ccamaron+bm[0][0];
            }
            if(mariscos==3)
            {
                ccalamar=ccalamar+bm[0][0];
            }
            if(mariscos==4)
            {
                ccaracol=ccaracol+bm[0][0];
            }
            bm[bodega][mariscos]=bm[0][0]+bm[bodega][mariscos];
            sumacompra=sumacompra+bm[0][0];
            system("pause");
        }
        if(menu1==2)
        {
            system("cls");
            printf("\n---------------Venta---------------");
            printf("\nDe que bodega desea Comprar? (1-10) ");
            scanf("%d",&bodega);
            while(bodega>10)
            {
                printf("\nNo existe esa bodega, solo existen 10\nEn que bodega desea comprar? (1-10)\nBodega: ");
                scanf("%d",&bodega);
            }
            printf("\n\t1)Pulpo\t\t2)Camaron\n\t3)Calamar\t4)Caracol");
            printf("\n\nQue tipo de marisco desea comprar? ");
            scanf("%d",&mariscos);
            while(mariscos>4)
            {
                printf("\nNo existe ese marisco\nEscoja un tipo de mariscos: ");
                scanf("%d",&mariscos);
            }
            printf("\nCuantos Kilos? ");
            scanf("%d",&bm[0][0]);
            printf("\nSe an restado %d Kg de la bodega\n",bm[0][0]);
            if(mariscos==1)
            {
                vpulpo=vpulpo+bm[0][0];
            }
            if(mariscos==2)
            {
                vcamaron=vcamaron+bm[0][0];
            }
            if(mariscos==3)
            {
                vcalamar=vcalamar+bm[0][0];
            }
            if(mariscos==4)
            {
                vcaracol=vcaracol+bm[0][0];
            }
            bm[bodega][mariscos]=bm[bodega][mariscos]-bm[0][0];
            restaventa=restaventa+bm[0][0];
            system("pause");
        }
        if(menu1==3)
        {
            while(menu2!=4)
            {
                system("cls");
                printf("\n-------------Reportes--------------");
                printf("\n\n\t1)Inventario\t\t2)Ventas\n\t3)Compras\t\t4)Regresar");
                printf("\n\nEntra en un menu: ");
                scanf("%d",&menu2);
                if(menu2>4)
                {
                    printf("\nOpcion no valida\n");
                    system("pause");
                }
                if(menu2==1)
                {
                    while(menu3!=4)
                    {
                        system("cls");
                        printf("\n------------Inventarios------------");
                        printf("\n\n\t1)General\t\t2)Bodega\n\t3)Marisco\t\t4)Regresar");
                        printf("\n\nEscoje una opcion: ");
                        scanf("%d",&menu3);
                        if(menu3>4) //opcion invalida
                        {
                            printf("\nNo existe esa opcion...\n");
                            system("pause");
                        }
                        if(menu3==1) //Reporte General
                        {
                            printf("\nBodega\t\tPulpo\t\tCamaron\t\tCalamar\t\tCaracol\n");
                            for(x=1; x<11; x++)
                            {
                                printf("\n%d",x);
                                for(y=1; y<5; y++)
                                {
                                    printf("\t\t%d Kg",bm[x][y]);
                                }
                            }
                            printf("\n\n");
                            system("pause");
                        }
                        if(menu3==2) //Reporte por Bodega
                        {
                            printf("\nEscoje una de las 10 bodegas para inspeccionar: ");
                            scanf("%d",&bodega);
                            if(bodega>10)
                            {
                                printf("\nNo existe esa bodega, solo existen 10\nEscoje una de las 10 (1-10)\nBodega: ");
                                scanf("%d",&bodega);
                            }
                            if(bodega<11)
                            {
                                printf("\nBodega\t\tPulpo\t\tCamaron\t\tCalamar\t\tCaracol\n");
                                printf("  %d",bodega);
                                for(y=1; y<5; y++)
                                {
                                    printf("\t\t%d Kg",bm[bodega][y]);
                                }
                            }
                            printf("\n\n");
                            system("pause");
                        }
                        if(menu3==3) //Reporte por marisco
                        {
                            printf("\n\t1)Pulpo\t\t\t2)Camaron\n\t3)Calamar\t\t4)Caracol");
                            printf("\n\nEscoje una clase de marisco: ");
                            scanf("%d",&mariscos);
                            if(mariscos>10)
                            {
                                printf("\nNo existe ese marisco, escoje una opcion valida");
                                scanf("%d",&bodega);
                                printf("\n\nEscoje una clase de marisco: ");
                                scanf("%d",&mariscos);
                            }
                            if(mariscos==1) //Reporte de Pulpo
                            {
                                printf("\n\nBodega\t\tKg de Pulpo");
                                for(x=1; x<11; x++)
                                {
                                    printf("\n  %d\t\t  %d Kg",x,bm[x][1]);
                                }
                            }
                            if(mariscos==2) //Reporte de Camaron
                            {
                                printf("\n\nBodega\t\tKg de Camaron");
                                for(x=1; x<11; x++)
                                {
                                    printf("\n  %d\t\t  %d Kg",x,bm[x][2]);
                                }
                            }
                            if(mariscos==3) //Reporte de Calamar
                            {
                                printf("\n\nBodega\t\tKg de Calamar");
                                for(x=1; x<11; x++)
                                {
                                    printf("\n  %d\t\t  %d Kg",x,bm[x][3]);
                                }
                            }
                            if(mariscos==4) //Reporte de Caracol
                            {
                                printf("\n\nBodega\t\tKg de Caracol");
                                for(x=1; x<11; x++)
                                {
                                    printf("\n  %d\t\t  %d Kg",x,bm[x][4]);
                                }
                            }
                            printf("\n\n");
                            system("pause");
                        }
                    }
                }
                if(menu2==2)
                {
                    printf("\n\n-----Venta total por mariscos------\nPulpo\t\tCamaron\t\tCalamar\t\tCaracol\t\tTotal\n");
                    printf("%d Kg\t\t%d Kg\t\t%d Kg\t\t%d Kg\t\t%d Kg\n\n",vpulpo,vcamaron,vcalamar,vcaracol,restaventa);
                    system("pause");
                }
                if(menu2==3)
                {
                    printf("\n\n-----Compra total por mariscos-----\nPulpo\t\tCamaron\t\tCalamar\t\tCaracol\t\tTotal\n");
                    printf("%d Kg\t\t%d Kg\t\t%d Kg\t\t%d Kg\t\t%d Kg\n\n",cpulpo,ccamaron,ccalamar,ccaracol,sumacompra);
                    system("pause");
                }
            }
        }
        menu2=0;
        menu3=0;
    }
}

Pueden cerrar el post :D