Programa operaciones no muy bien acabado

Iniciado por novatus84, 16 Octubre 2014, 15:42 PM

0 Miembros y 1 Visitante están viendo este tema.

novatus84

Buenas solo llevo 2 días con c ++ y necesito consejos ya que estoy un poco bloqueado, tengo lo siguiente:
#include <iostream>

using namespace std;

int main() {
    double firstnum; double seconnum; double thirnum; double fournum;
    string operation; string operation2;
    double plus ;double minus; double mul; double div;
   
   
    cout << "Please enter 2 operations: ";
    cin >> firstnum >> operation >> seconnum; // numbers for first operation
    cin >> thirnum >> operation2 >> fournum; // numbers for second numbers
   
    if (operation=="+" || operation=="plus" ) {
        plus = firstnum + seconnum;
        cout << "The first sum is: " << plus << endl;}
   
    if  (operation=="-" || operation=="minus") {
        minus = firstnum - seconnum;
        cout << "The first minus is: " << minus << endl;}
   
    if (operation=="*" || operation=="mul") {
        mul = firstnum * seconnum;
        cout << "The first multiplication is: " << mul << endl;}
    if (operation=="/" || operation=="div"){
        if (seconnum==0) {
            cout << "cero is impossible to operate" << endl;  }
       
        div = firstnum / seconnum ;
        cout << "The first div is: " << div << endl; }
   
   
    if (operation2=="+" || operation2=="plus" ) {
        plus = thirnum + fournum;
        cout << "The second sum is: " << plus << endl;}
   
    if  (operation2=="-" || operation2=="minus") {
        minus = thirnum - fournum;
        cout << "The second minus is: " << minus << endl;}
   
    if (operation2=="*" || operation2=="mul") {
        mul = thirnum * fournum;
        cout << "The second multiplication is: " << mul << endl;}
    if (operation2=="/" || operation2=="div"){
        if (fournum==0) {
            cout << "cero is impossible to operate" << endl; }
       
        div = thirnum / fournum;
        cout << "The second div is: " << div << endl; ;
    }
}

El problema que meto la primera operación al poner una division entre 0 quiero que siga con la segunda operación y no que me diga que es infinito, esta un poco guarrete pero para 2 días que llevo me doy por satisfecho al día de hoy, consejos ayudas? gracias de antemano

rir3760

La salida que mencionas sucede porque al detectar la división por cero imprimes el mensaje de error pero realizas de todos modos la operación cuando no deberías.

Para solucionarlo debes utilizar una sentencia "if ... else ..." donde si el divisor es cero presentas el mensaje y en caso contrario (divisor diferente de cero) realizas la operación. En el caso de la primera operación el condicional debe cambiarse a:
Código (cpp) [Seleccionar]
if (operation == "/" || operation == "div"){
   if (seconnum == 0)
      cout << "cero is impossible to operate" << endl;
   else
      cout << "The first div is: " << (firstnum / seconnum) << endl;
}

El cambio en la segunda operación es similar.

Por ultimo puedes eliminar las variables donde almacenas el resultado (plus, minus, etc.) ya que no son necesarias, puedes imprimir el resultado directamente.

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

novatus84

#2
Muchas gracias!!!! ya lo tengo perfecto, cuando se ve después se ve de otra forma como si fuera una tontería que la era.... jejejej. lo dicho muchas gracias!!