Calculadora

Iniciado por bryanrz96, 28 Octubre 2015, 20:00 PM

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

bryanrz96

Código (cpp) [Seleccionar]
Bueno, quisiera una ayuda,
no me da el resultado de la division esta calculadora, le falta una funcion, no se cual es,..quiero el resultado con dos decimales.
ademas quisiera que cuando divida para cero me imprima: imposible realizar operacion.

disculpen el idioma, estudio en italiano.

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int somma(int a, int b)
{
int ret;
ret = a + b;
return ret;
}
int sottrai(int a, int b)
{
int ret;
ret = a - b;
return ret;
}
int molt(int a, int b)
{
int ret;
ret = a * b;
return ret;
}
double dividi(int a, int b)
{
double ret;
ret = a/b;
return ret;
}
int main() {
int a,b;
char op;

   cout<<"Inserisci il primo numero:";
cin>>a;
cout<<"Inserisci il secondo numero:";
cin>>b;
cout<<"Scegli l'operatore: ";
cin>>op;
switch(op)
{
case '+':{


cout<<"risultato:"<<a/b<<endl;
break;
}
case '-':{


cout<<"risultato:"<<a-b<<endl;
break;
}
case '*':{

cout<<"risultato:"<<a*b<<endl;
break;
}case '/':{


cout<<"risultato:"<<a/b<<endl;

            break;
}


   }

return 0;
}




Mod: Los códigos deben ir en etiquetas GeSHi

engel lex

la división de 2 enteros da por resultado un entero, si quieres que esto no sea así tienes que usar casting de variables

Código (cpp) [Seleccionar]
ret = (double)a/b;

esto tornará "a" tipo double antes  de calcularlo, por lo tanto el resultado es el tipo de varibale de mayor precisión

sobre la división entre 0 tienes 2 caminos,
el simple
Código (cpp) [Seleccionar]
if(b==0) imprimir ("no puedes dividir entre cero")

el complicado, manejo de excepciones
try - catch
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bryanrz96

#2
Cita de: engel lex en 28 Octubre 2015, 20:13 PM
la división de 2 enteros da por resultado un entero, si quieres que esto no sea así tienes que usar casting de variables

Código (cpp) [Seleccionar]
ret = (double)a/b;

esto tornará "a" tipo double antes  de calcularlo, por lo tanto el resultado es el tipo de varibale de mayor precisión

sobre la división entre 0 tienes 2 caminos,
el simple
Código (cpp) [Seleccionar]
if(b==0) imprimir ("no puedes dividir entre cero")

el complicado, manejo de excepciones
try - catch

Disculpa donde debo poner
Código (cpp) [Seleccionar]
ret = (double)a/b;

No me sale :'(

engel lex

en la división, linea 25
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bryanrz96

Cita de: engel lex en 28 Octubre 2015, 20:32 PM
en la división, linea 25

Ya lo puse, pero no me viene el resultado, si divido 5/2 me da 2.
que puedo hacer?

engel lex

muestra como tienes el código en este momento
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bryanrz96

Cita de: engel lex en 28 Octubre 2015, 21:25 PM
muestra como tienes el código en este momento

El codigo esta asi:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int somma(int a, int b)
{
int ret;
ret = a + b;
return ret;
}
int sottrai(int a, int b)
{
int ret;
ret = a - b;
return ret;
}
int molt(int a, int b)
{
int ret;
ret = a * b;
return ret;
}
double dividi(int a, int b)
{
double ret;
ret = (double)a/b;
return ret;
}
int main() {
int a,b;
char op;

    cout<<"Inserisci il primo numero:";
cin>>a;
cout<<"Inserisci il secondo numero:";
cin>>b;
cout<<"Scegli l'operatore: ";
cin>>op;
switch(op)
{
case '+':{


cout<<"risultato:"<<a/b<<endl;
break;
}
case '-':{


cout<<"risultato:"<<a-b<<endl;
break;
}
case '*':{

cout<<"risultato:"<<a*b<<endl;
break;
}case '/':{

cout<<"risultato:"<<a/b<<endl;

              break;
}


    }

return 0;
}


Creo que luego del int main debo declarar una variable, pero no se cual...
y para que me imprima "no es posible efectuar la operacion" cuando divido para cero no se donde poner el If para que actue.

engel lex

mira tu switch

Código (cpp) [Seleccionar]
switch(op)
{
case '+':{//cuando es "+" divides?


cout<<"risultato:"<<a/b<<endl;//divides directamente en lugar de usar la función?
break;
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

bryanrz96

Cita de: engel lex en 28 Octubre 2015, 21:33 PM
mira tu switch

Código (cpp) [Seleccionar]
switch(op)
{
case '+':{//cuando es "+" divides?


cout<<"risultato:"<<a/b<<endl;//divides directamente en lugar de usar la función?
break;
}


Si, me he confundido con ese paso.
que funcion puedo usar en ves de la que tengo establecida?
Código (cpp) [Seleccionar]
switch(op)
{
case '+':{


cout<<"risultato:"<<a+b<<endl;
break;
}

engel lex

tu creaste una serie de funciones con un fin, ese fin es usarlas

ej

Código (cpp) [Seleccionar]
case '/':{

cout<<"risultato:"<<dividi(a,b)<<endl;

              break;
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.