Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Miguel2097 en 13 Diciembre 2016, 05:32 am



Título: Error de validación o calculo matemático
Publicado por: Miguel2097 en 13 Diciembre 2016, 05:32 am
Hola!

Tengo el siguiente problema en el case 2, ocupo hacer una validacion de "salarios" todos los calculos me estan funcionando excepto el de mayor a 50 mil, lo que debe de hacer esa validación es que todo salario mayor a 50 mil , se le aumenta un 7% pero no lo esta haciendo, de hecho todo monto que pongo mayor a 50 mil me imprime por pantalla 57500 cabe destacar que las demas validaciones si me estan funcionando.

Código:

Código
  1. #include <string>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5.  
  6. struct strdatos {
  7.  
  8. string cedula;
  9. string nombre;
  10. string edad;
  11. string salario;
  12.  
  13. }Empleado;
  14.  
  15.  
  16. int main () {
  17.  
  18. string mat [3][4];
  19. int f = 0;
  20. int c = 0;
  21. double aumento = 0;
  22.  
  23. int opc;
  24.  
  25. do {
  26.  
  27. system("cls");
  28. cout << "***********  Menu ******************" << endl;
  29. cout << "1 . Ingresar Datos" << endl;
  30. cout << "2. Mostrar Planilla" << endl;
  31. cout << "3. Salir" << endl << endl;
  32. cin >> opc;
  33. cout << endl;
  34.  
  35.  
  36.  
  37. switch (opc) {
  38.  
  39. case 1:
  40.  
  41. system ("cls");
  42.  
  43. for (f = 0; f <= 2; f++) {
  44.  
  45.  
  46. cout << "Ingrese Cedula ";
  47. cin >> Empleado.cedula;
  48. mat [f][0] = Empleado.cedula;
  49.  
  50. cout << "Ingrese Nombre ";
  51. cin >> Empleado.nombre;
  52. mat [f][1] = Empleado.nombre;
  53.  
  54. cout<< "Ingrese Edad ";
  55. cin >> Empleado.edad;
  56. mat [f][2] = Empleado.edad;
  57.  
  58. cout<< "Ingrese Salario ";
  59. cin >> Empleado.salario;
  60. mat [f][3] = Empleado.salario;
  61.  
  62. cout << "Empleado Ingresado" << endl << endl;
  63.  
  64. for (c = 0; c <= 3; c++){
  65.  
  66. }
  67. }
  68. break;
  69.  
  70. case 2:
  71.  
  72. for (f = 0; f <= 2; f++) {
  73. for (c = 0; c <= 3; c++){
  74.  
  75. cout << mat [f][c] << " ";
  76.  
  77. }
  78.  
  79. cout << endl;
  80.  
  81. stringstream (mat[f][3]) >> aumento;
  82.  
  83. if (aumento < 50000 ) {
  84. aumento = (aumento * 0.3) + aumento;
  85.  
  86. }else if (aumento = 50000) {
  87. aumento = (aumento * 0.15 ) + aumento;
  88.  
  89. }else if (aumento >= 50001 ) {
  90. aumento = (aumento * 0.07) + aumento;
  91.  
  92. }
  93.  
  94. cout << "El salario con el aumento es de : " << aumento << endl << endl;
  95.  
  96. }
  97.  
  98.  
  99. system ("pause");
  100.  
  101. }// Switch
  102.  
  103.  
  104. }while (opc != 3);
  105.  
  106.  
  107.  
  108.  
  109. return 0;
  110. }


Mod: Los códigos deben ir en etiquetas GeSHi, segundo aviso


Título: Re: Error de validación o calculo matemático
Publicado por: engel lex en 13 Diciembre 2016, 05:39 am
linea 86

Código
  1. }else if (aumento = 50000) {

estás asignando, no comparando...


otra cosa... la siguiente condicion con un simples else basta... ya que pones un else if aumento >= 50001 pero como aumento es float podría vale 50000.1 y no entra en ninguna condición