Test Foro de elhacker.net SMF 2.1

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:
#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
Cita de: engel lex en  7 Diciembre 2014, 21:31 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
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 (cpp) [Seleccionar]

while (menu!=4){
...
if (menu!=4){ ... }
if (menu==1){ ... }
...
if (menu==4){ ... }

}


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)

#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