Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: santiagocohen18 en 2 Septiembre 2017, 20:25 pm



Título: controlador de alcoholemia en c++
Publicado por: santiagocohen18 en 2 Septiembre 2017, 20:25 pm
necesito ayuda  :-\
estoy haciendo algo mal en la cuenta o en los int/float
teniendo en cuenta la formula de alcoholemia: (ml de sustancia / 100 ) x graduacion alcoholica (cerveza 5.5), todo eso por 0.8 y despues divides por (peso x el genero (mujer = 0.6 y hombre 0.7), lo que me sale mal es la parte "matematica" del programa, en calculadora me da distinto que en el programa

solo necesito eso del primer caso y a partir de ese caso puedo hacer los demas, gracias!



Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <cstdlib>
  4. #include <math.h>
  5. #include <stdio.h>
  6.  
  7. using namespace std;
  8. int main (){
  9.      int opc,a,b,xd,ml;
  10.      float res,d,cc,bb,alcolemiaa,alcolemiab,alcolemiac,hrasa,horasb,horasc,horasd,alcolemiax,kg,c;
  11.  
  12. while(xd != 5){
  13.  
  14. cout <<"\n--------MENU-------";
  15. cout <<"\n1.Nivel de alcoholemia";
  16. cout <<"\n2.En cuanto podre manejar";
  17. cout <<"\n3.en cuanto no tendre alcohol";
  18. cout <<"\n4.salir";
  19.  
  20. cout <<"\nElija una opcion ===>";cin >> opc;
  21.  
  22. switch(opc){
  23. case 1:
  24. system ("cls");
  25. cout <<"cuantos ml tomaste?"<<endl;
  26. cin >>ml;
  27. cout <<"que tomaste? (1.cerveza,2.vino,3.whisky)"<<endl;
  28. cin >>c;
  29. cout <<"cuantos pesas? (kg)"<<endl;
  30. cin >>kg;
  31. cout <<"Hombre o Mujer (1/2)"<<endl;
  32. cin >>b;
  33. if (b = 1){
  34. bb = 0.7;
  35. }
  36. if (b = 2){
  37. bb = 0.6;
  38. }
  39. if (c = 1){
  40. cc = 5.5;
  41. }
  42. if (c = 2){
  43. cc = 12;
  44. }
  45. if (c = 3){
  46. cc = 40;
  47. }
  48. res = (((ml/100)*cc)*0.8)/(kg*bb); // cc es graduacion alcoholica, bb es el genero
  49. cout <<"la respuesta es: "<<res<<endl;
  50. system ("pause");
  51. system ("cls");
  52. break;
  53. ]
  54.  
  55.  


Título: Re: controlador de alcoholemia en c++
Publicado por: ivancea96 en 2 Septiembre 2017, 20:42 pm
(ml/100)
ml es int, por lo tanto, ese /100 va a generar otro int (perdiendo los decimales)
Te diría que pongas todas las avriables que vas a usar en la fórmula como float (o al menos, las necesarias, por ejemplo, "int * float" resulta en un float).

A parte de esto, cuando vayas a hacer una pregunta, di exactamente qué es lo que ocurre, "no sé qué estoy haciendo mal" no ayuda. Di qué es lo que hace el programa mal.


Título: Re: controlador de alcoholemia en c++
Publicado por: ivancea96 en 2 Septiembre 2017, 21:45 pm
Y bueno, en las condiciones:
Código
  1. if (b = 1)
"=" es una asignación, no una comparación. Para comparar es "==".


Título: Re: controlador de alcoholemia en c++
Publicado por: santiagocohen18 en 2 Septiembre 2017, 21:54 pm
es verdad, que estupido, ya funciona, gracias!!!