Error de validación o calculo matemático

Iniciado por Miguel2097, 13 Diciembre 2016, 05:32 AM

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

Miguel2097

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 (cpp) [Seleccionar]
#include <string>
#include <sstream>

using namespace std;

struct strdatos {

string cedula;
string nombre;
string edad;
string salario;

}Empleado;


int main () {

string mat [3][4];
int f = 0;
int c = 0;
double aumento = 0;

int opc;

do {

system("cls");
cout << "***********  Menu ******************" << endl;
cout << "1 . Ingresar Datos" << endl;
cout << "2. Mostrar Planilla" << endl;
cout << "3. Salir" << endl << endl;
cin >> opc;
cout << endl;



switch (opc) {

case 1:

system ("cls");

for (f = 0; f <= 2; f++) {


cout << "Ingrese Cedula ";
cin >> Empleado.cedula;
mat [f][0] = Empleado.cedula;

cout << "Ingrese Nombre ";
cin >> Empleado.nombre;
mat [f][1] = Empleado.nombre;

cout<< "Ingrese Edad ";
cin >> Empleado.edad;
mat [f][2] = Empleado.edad;

cout<< "Ingrese Salario ";
cin >> Empleado.salario;
mat [f][3] = Empleado.salario;

cout << "Empleado Ingresado" << endl << endl;

for (c = 0; c <= 3; c++){

}
}
break;

case 2:

for (f = 0; f <= 2; f++) {
for (c = 0; c <= 3; c++){

cout << mat [f][c] << " ";

}

cout << endl;

stringstream (mat[f][3]) >> aumento;

if (aumento < 50000 ) {
aumento = (aumento * 0.3) + aumento;

}else if (aumento = 50000) {
aumento = (aumento * 0.15 ) + aumento;

}else if (aumento >= 50001 ) {
aumento = (aumento * 0.07) + aumento;

}

cout << "El salario con el aumento es de : " << aumento << endl << endl;

}


system ("pause");

}// Switch


}while (opc != 3);




return 0;
}



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

engel lex

linea 86

Código (cpp) [Seleccionar]
}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
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.