Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: novatus84 en 16 Octubre 2014, 15:42 pm



Título: Programa operaciones no muy bien acabado
Publicado por: novatus84 en 16 Octubre 2014, 15:42 pm
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


Título: Re: Programa operaciones no muy bien acabado
Publicado por: rir3760 en 16 Octubre 2014, 16:10 pm
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
  1. if (operation == "/" || operation == "div"){
  2.   if (seconnum == 0)
  3.      cout << "cero is impossible to operate" << endl;
  4.   else
  5.      cout << "The first div is: " << (firstnum / seconnum) << endl;
  6. }
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


Título: Re: Programa operaciones no muy bien acabado
Publicado por: novatus84 en 16 Octubre 2014, 16:24 pm
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!!