Calculadora con switch

Iniciado por cazagavilan, 21 Julio 2011, 06:40 AM

0 Miembros y 2 Visitantes están viendo este tema.

cazagavilan

Código (cpp) [Seleccionar]
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;

int main()

{
  int dato1;
  int dato2;
  int resultado;
     cout <<"****************************************\n";
     cout <<"*****                              *****\n";
     cout <<"****                                ****\n";
     cout <<"***                                  ***\n";
     cout <<"**                                    **\n";
     cout <<"*             CALCULADORA              *\n";
     cout <<"**                                    **\n";
     cout <<"***                                  ***\n";
     cout <<"****                                ****\n";
     cout <<"*****                              *****\n";
     cout <<"****************************************\n";

     cout <<"Que desea hacer?\n";
     cout <<"[1]-Suma.\n";
     cout <<"[2]-Resta.\n";
     cout <<"[3]-Multiplicacion.\n";
     cout <<"[4]-Division.\n";
     cin >> resultado;

     cout <<"Escriba la primera cifra: ";
     cin >> dato1;
     cout <<"Escriba la segunda cifra: ";
     cin >> dato2;

     switch(resultado)
     {
     case 1:
        resultado = dato1 + dato2;
        break;
     case 2:
        resultado = dato1 - dato2;
        break;
     case 3:
        resultado = dato1 * dato2;
        break;
     case 4:
        resultado = dato1 / dato2;
       default:
        cout <<"No ha seleccionado una opcion correcta";
     }
     cout << resultado <<"\n";
}

Hola, he hecho esta calculadora y me funciona todo menos cuando pongo un numero que no es ninguna de las opciones que doy, en vez de saltar el mensage cuando se selecciona una opcion incorrecta te dice que selecciones el dato1 y dato2 luego hace una suma y luego me salta el mensage... alguien me podria ayudar por favor.

Gracias.

P.D: He encontrado otro fallo, cuando selecciono la division siempre me salta el mensage de default y aparte me da el resultado:/.

naderST

En el case 4 te falta el break.

Ferno

La última parte no está bien diseñada. Primero que nada, debes mostrar el resultado dentro de cada case (porque sino, también mostraría un resultado si no hubiese elegido ninguna opción) o bien puedes con un if, mostrar el resultado si la opción fueron los primeros 4 (aunque para eso debes cambiar la variable "resultado" porque la usas para otra cosa también).
Además, falta un break tanto en el case 4 como en el default, y digamos, un getchar() al final del programa para pausarlo y ver el resultado o mensaje.

satu

Hola

También falta el return del main y que no incluyas librerías que no utilizas

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main()
{
    int dato1;
    int dato2;
    int resultado;

    cout <<"****************************************\n";
    cout <<"*****                              *****\n";
    cout <<"****                                ****\n";
    cout <<"***                                  ***\n";
    cout <<"**                                    **\n";
    cout <<"*             CALCULADORA              *\n";
    cout <<"**                                    **\n";
    cout <<"***                                  ***\n";
    cout <<"****                                ****\n";
    cout <<"*****                              *****\n";
    cout <<"****************************************\n";

    cout <<"\nQue desea hacer?\n";
    cout <<"[1]-Suma.\n";
    cout <<"[2]-Resta.\n";
    cout <<"[3]-Multiplicacion.\n";
    cout <<"[4]-Division.\n";
    cin >> resultado;

    if(resultado>=1 && resultado<=4)
        {
        cout <<"Escriba la primera cifra: ";
        cin >> dato1;
        cout <<"Escriba la segunda cifra: ";
        cin >> dato2;

        switch(resultado)
            {
            case 1:
                resultado = dato1 + dato2;
                break;
            case 2:
                resultado = dato1 - dato2;
                break;
            case 3:
                resultado = dato1 * dato2;
                break;
            case 4:
                resultado = dato1 / dato2;
                break;
            }
        cout << resultado <<"\n";
        }
    else
        cout <<"No ha seleccionado una opcion correcta";

    cout<<endl<<endl<<endl<<"Pulsa Enter para salir";
    while(cin.get() != '\n');
    cin.get();
    return 0;
}


Saludos
Breakbeat como forma de vida

cazagavilan


KaL3o

Cita de: satu en 21 Julio 2011, 12:39 PM
También falta el return del main y que no incluyas librerías que no utilizas

en realidad el return no del main no es necesario... aunque depende del compilador. Puesto que casi todos los compiladores actuales lo ponen por defecto

Salu2 ;)
Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.

satu

en realidad el return del main es recomendable porque indica al SO el estado de finalización del programa, por lo tanto es bueno ponerlo  ;)

Saludos
Breakbeat como forma de vida

KaL3o

#7
saludos satu... creoo que me exprese mal

El return siempre estara (y siempre sera necesario), a lo me referia es que no es necesario colocarlo dependiendo del compilador, puesto que la mayoria de compiladores te lo colocan por defecto.


Salu2 ;)
Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.

satu

OK, te entendí mal jeje

Saludos
Breakbeat como forma de vida

rir3760

En C++ estándar cuando no se indica el valor de retorno de la función "main" este es igual a cero. Sin embargo (por "buenas costumbres") se recomienda indicarlo explícitamente.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language