Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: bryanrz96 en 28 Octubre 2015, 20:00 pm



Título: Calculadora
Publicado por: bryanrz96 en 28 Octubre 2015, 20:00 pm
Código
  1.  
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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int somma(int a, int b)
  5. {
  6. int ret;
  7. ret = a + b;
  8. return ret;
  9. }
  10. int sottrai(int a, int b)
  11. {
  12. int ret;
  13. ret = a - b;
  14. return ret;
  15. }
  16. int molt(int a, int b)
  17. {
  18. int ret;
  19. ret = a * b;
  20. return ret;
  21. }
  22. double dividi(int a, int b)
  23. {
  24. double ret;
  25. ret = a/b;
  26. return ret;
  27. }
  28. int main() {
  29. int a,b;
  30. char op;
  31.  
  32.    cout<<"Inserisci il primo numero:";
  33. cin>>a;
  34. cout<<"Inserisci il secondo numero:";
  35. cin>>b;
  36. cout<<"Scegli l'operatore: ";
  37. cin>>op;
  38. switch(op)
  39. {
  40. case '+':{
  41.  
  42.  
  43. cout<<"risultato:"<<a/b<<endl;
  44. break;
  45. }
  46. case '-':{
  47.  
  48.  
  49. cout<<"risultato:"<<a-b<<endl;
  50. break;
  51. }
  52. case '*':{
  53.  
  54. cout<<"risultato:"<<a*b<<endl;
  55. break;
  56. }case '/':{
  57.  
  58.  
  59. cout<<"risultato:"<<a/b<<endl;
  60.  
  61.             break;
  62. }
  63.  
  64.  
  65.    }
  66.  
  67. return 0;
  68. }
  69.  
  70.  


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Calculadora
Publicado por: 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
  1. 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
  1. if(b==0) imprimir ("no puedes dividir entre cero")

el complicado, manejo de excepciones
try - catch


Título: Re: Calculadora
Publicado por: bryanrz96 en 28 Octubre 2015, 20:30 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
  1. 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
  1. if(b==0) imprimir ("no puedes dividir entre cero")

el complicado, manejo de excepciones
try - catch

Disculpa donde debo poner
Código
  1. ret = (double)a/b;

No me sale :'(


Título: Re: Calculadora
Publicado por: engel lex en 28 Octubre 2015, 20:32 pm
en la división, linea 25


Título: Re: Calculadora
Publicado por: bryanrz96 en 28 Octubre 2015, 20:59 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?


Título: Re: Calculadora
Publicado por: engel lex en 28 Octubre 2015, 21:25 pm
muestra como tienes el código en este momento


Título: Re: Calculadora
Publicado por: bryanrz96 en 28 Octubre 2015, 21:30 pm
muestra como tienes el código en este momento

El codigo esta asi:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int somma(int a, int b)
  5. {
  6. int ret;
  7. ret = a + b;
  8. return ret;
  9. }
  10. int sottrai(int a, int b)
  11. {
  12. int ret;
  13. ret = a - b;
  14. return ret;
  15. }
  16. int molt(int a, int b)
  17. {
  18. int ret;
  19. ret = a * b;
  20. return ret;
  21. }
  22. double dividi(int a, int b)
  23. {
  24. double ret;
  25. ret = (double)a/b;
  26. return ret;
  27. }
  28. int main() {
  29. int a,b;
  30. char op;
  31.  
  32.    cout<<"Inserisci il primo numero:";
  33. cin>>a;
  34. cout<<"Inserisci il secondo numero:";
  35. cin>>b;
  36. cout<<"Scegli l'operatore: ";
  37. cin>>op;
  38. switch(op)
  39. {
  40. case '+':{
  41.  
  42.  
  43. cout<<"risultato:"<<a/b<<endl;
  44. break;
  45. }
  46. case '-':{
  47.  
  48.  
  49. cout<<"risultato:"<<a-b<<endl;
  50. break;
  51. }
  52. case '*':{
  53.  
  54. cout<<"risultato:"<<a*b<<endl;
  55. break;
  56. }case '/':{
  57.  
  58. cout<<"risultato:"<<a/b<<endl;
  59.  
  60.             break;
  61. }
  62.  
  63.  
  64.    }
  65.  
  66. return 0;
  67. }
  68.  

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.


Título: Re: Calculadora
Publicado por: engel lex en 28 Octubre 2015, 21:33 pm
mira tu switch

Código
  1. switch(op)
  2. {
  3. case '+':{//cuando es "+" divides?
  4.  
  5.  
  6. cout<<"risultato:"<<a/b<<endl;//divides directamente en lugar de usar la función?
  7. break;
  8. }


Título: Re: Calculadora
Publicado por: bryanrz96 en 28 Octubre 2015, 21:44 pm
mira tu switch

Código
  1. switch(op)
  2. {
  3. case '+':{//cuando es "+" divides?
  4.  
  5.  
  6. cout<<"risultato:"<<a/b<<endl;//divides directamente en lugar de usar la función?
  7. break;
  8. }

Si, me he confundido con ese paso.
que funcion puedo usar en ves de la que tengo establecida?
Código
  1. switch(op)
  2. {
  3. case '+':{
  4.  
  5.  
  6. cout<<"risultato:"<<a+b<<endl;
  7. break;
  8. }


Título: Re: Calculadora
Publicado por: engel lex en 28 Octubre 2015, 22:49 pm
tu creaste una serie de funciones con un fin, ese fin es usarlas

ej

Código
  1. case '/':{
  2.  
  3. cout<<"risultato:"<<dividi(a,b)<<endl;
  4.  
  5.             break;
  6. }