• Lunes 23 de Diciembre de 2024, 17:32

Autor Tema:  Ayuda Con Menus..  (Leído 2663 veces)

Ian

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
    • http://www.Notengo.com
Ayuda Con Menus..
« en: Jueves 4 de Noviembre de 2004, 00:41 »
0
Hola!!!!!!!!!!!!!

Tengo un problemilla con un programa........, haber, es el siguiente, el programa despliega un menu, de operaciones, osea permite la opcion de eligir si queremos sumar, restar, multiplicar o dividir, lo hace con Switch, entoces estan los cuatro casos, despues de eligir cualquiera de los casos, y realizar la operacion, da la opcion de termina o regrezar al menu (esto lo hace con  While(opc3) ), la cosa es que si regreso al menu y le doy de nuevo, por ejemplo, sumar, me suma el resultado anterior, esto solo pasa cuando repito la misma operacion, +, --.
Hummmmm,  el programa por ahora solo da la opcion de sumar y restar, iva en esto cuando me di cuenta de el problema...........

-> cuando se elige la opcion restar toma todos los numeros como negativos..... 8 D..

Les agradesco si ven algun otro error, algo que sobre, o que haga falta, soy nuevo en esto dela programacion, pero pues ahí voy x D

Este es el .cpp

#include <conio.h>
#include <iomanip.h>
#include <dos.h>
#include <stdio.h>
#include <iostream.h>


int main()
{
  long float  sum, res, mul, div, resul1, resul2, resul3, resul4;
  int  opc1, opc2, opc3=1, i;

  window(1,1,80,25); textbackground(BLACK); clrscr();

    while (opc3==1)
    {
  window(3,1,80-5,6); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();

  gotoxy(4,2); cprintf("ESTE PROGRAMA DA UN MENU CON LA OPCION DE REALIZAR UNA +, -, *, /");

  gotoxy(15,4); cprintf("PRGRAMADO POR: Nicolas Gomez Martinez");

  window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();

  gotoxy(15,2);  cprintf("MENU");
  gotoxy(3,4);   cprintf("1. SUMA");
  gotoxy(3,5);   cprintf("2. RESTA");
  gotoxy(3,6);   cprintf("3. MULTIPLICACION");
  gotoxy(3,7);   cprintf("4. DIVICION");

  gotoxy(4,9);   cprintf("¨Que operacion elige? . .  ");
       cscanf("%i", &opc1);


   switch (opc1)
   {
     case 1:

     window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
     gotoxy(7,2); cprintf("REALIZANDO SUMA");
     gotoxy(3,5); cprintf("¨Cauntos #ïs deseas sumar?: ");
             cscanf("%i", &opc2);

      for (i=1; i<=opc2; i++)
       {
        window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
        gotoxy(3,2); cprintf("Digita numeros menores \n\r  que 999999999");


        gotoxy(4,6);cprintf("Digita un numero: ");
        window(25,14,34,14); textbackground(LIGHTGRAY); textcolor(BLACK); clrscr();
        cscanf("%lf", &sum);
        resul1=resul1+sum;
       }

        window(42,9,80-6,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
        gotoxy(11,2); cprintf("RESULTADOS");
        gotoxy(3,5); cprintf("La suma es: %lf", resul1);

     delay(2000);

     getch();
     break;

     case 2:

     window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
     gotoxy(7,2); cprintf("REALIZANDO RESTA");
     gotoxy(3,5); cprintf("¨Cauntos #ïs deseas restar?: ");
             cscanf("%i", &opc2);

    for (i=1; i<=opc2; i++)
       {
        window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
        gotoxy(3,2); cprintf("Digita numeros menores");
        gotoxy(3,3); cprintf("que 999999999");
        gotoxy(3,5); cprintf("Todos los numeos que digites");
        gotoxy(3,6); cprintf("se tomaran como negativos");

        gotoxy(4,8);cprintf("Digita un numero: ");
        window(25,16,34,16); textbackground(LIGHTGRAY); textcolor(BLACK); clrscr();
        cscanf("%lf", &res);
        resul2=resul2-res;

       }

        window(42,9,80-6,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
        gotoxy(11,2); cprintf("RESULTADOS");
        gotoxy(3,5); cprintf("La resta es: %lf", resul2);

     delay(2000);

     getch();
     break;

   }

   window(3,23,80-5,25); textbackground(RED); textcolor(BLACK); clrscr();
   gotoxy(8,2);
   cprintf("¨Que deseashacer? 1. Ir al MENU   2. Terminar . . . ");

   cscanf("%i", &opc3);
   window(1,1,80,25); textbackground(BLACK); clrscr();
   clrscr();

   }

  //window(42,9,80-5,20); textbackground(BLUE); textcolor(RED); clrscr();

  getch();
  return 0;

}


Les agradesco si me pueden ayudar.................. Help is Tnks
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
"No vivas para ser por temor la preza de otros sueños. Se vive una vez para se heternamente libre"

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Ayuda Con Menus..
« Respuesta #1 en: Jueves 4 de Noviembre de 2004, 12:42 »
0
:hola:

bueno lo de que te sume el resultado es normal porque no reciclas la variable result1 ni result2.


despues de acabar un bucle, esta variable tendrá el valor que tenia al acabar la iteración anterior.

Debes darle el valor cero al salir de cada iteracion. justo despues de escribir el resultado. Otra opcion es que te crees una función donde la variable result1 o 2 sea local.

                       :alien:

en cuanto a la resta, creo que tienes un problema en el concepto y en la implementacion, no en la programacion.

Una resta no es mas que una suma de números en los que por lo menos uno es negativo. Para restar dos numeros positivos, al primero no le debes cambiar el signo. Debes ir quitando de este número positivo, el resto tb en positivo. No entiendo lo de cambiar de signo. En tu caso estas restando todos los numeros introducidos por el usuario de 0 que es el valor que tiene result2 inicialmente.


Espero haberte ayudado por lo menos un poquito

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Ayuda Con Menus..
« Respuesta #2 en: Jueves 4 de Noviembre de 2004, 16:50 »
0
Declara variables locales dentro de cada opcion, por fa tambien utiliza funciones en vez de hacerlo todo en el mismo bloque, harias mas robusto tu programa por ultimo colocal los resul#=0, cada vez que empieces la opcion, entiendes osea
Código: Text
  1.  
  2. switch (opc1)
  3. {
  4. case 1:
  5. resul1=0;
  6. window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
  7. gotoxy(7,2); cprintf(&#34;REALIZANDO SUMA&#34;);
  8. gotoxy(3,5); cprintf(&#34;¨Cauntos #ïs deseas sumar?: &#34;);
  9. cscanf(&#34;%i&#34;, &opc2);
  10.  
  11. for (i=1; i&#60;=opc2; i++)
  12. {
  13. window(4,9,37,20); textbackground(BLUE); textcolor(LIGHTGREEN); clrscr();
  14. gotoxy(3,2); cprintf(&#34;Digita numeros menores &#092;n&#092;r que 999999999&#34;);
  15.  
  16.  
  17. gotoxy(4,6);cprintf(&#34;Digita un numero: &#34;);
  18. window(25,14,34,14); textbackground(LIGHTGRAY); textcolor(BLACK); clrscr();
  19. cscanf(&#34;%lf&#34;, &sum);
  20. resul1=resul1+sum;
  21. }
  22.  
  23.  
Asi cada vez que empieces otra vez el programa tendras tu variable limpia.
Ojala te sirva
Chao
El pasado son solo recuerdos, el futuro son solo sueños

Ian

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
    • http://www.Notengo.com
Re: Ayuda Con Menus..
« Respuesta #3 en: Viernes 5 de Noviembre de 2004, 02:52 »
0
Creo que me queda claro........

Tnk´s xD
"No vivas para ser por temor la preza de otros sueños. Se vive una vez para se heternamente libre"