C/Visual C - [AYUDA] Clasificación entre hombres y mujeres...

 
Vista:

[AYUDA] Clasificación entre hombres y mujeres...

Publicado por Fernando (3 intervenciones) el 12/09/2012 00:53:07
Tengo un programa en el cual tengo que ingresar el sexo, edad y años de servicio de 8 trabajadores, y dependiendo de los datos indicar si pueden o no jubilarse, teniendo en cuentas que los criterios de jubilación para las mujeres son mínimo 55 años de vida o 25 años de trabajo, mientras que para los hombres 60 años de vida o 30 años de trabajo, ahora el problema que tengo en mi codigo es que la clasificación de los sexo no funciona, aquí el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
using std::cout;
using std::cin;
 
int activos=0, años, edad, edadactivos=0, edadjubilados=0, jubilados=0, x=1;
char sexo;
int main ()
{
	for (x;x<=8;x++)
	{
		cout << "Ingrese el sexo del " << x << " trabajador/a (M/F): ";
		cin >> sexo;
		while (sexo!='f' || sexo!='m' || sexo!='F' || sexo!='M')
		{
			cout << "Sexo indefinido, intentelo de nuevo: ";
			cin >> sexo;
		}
		if (sexo=='f' || sexo=='F')
		{
			cout << "Ingrese la edad de la " << x << " trabajadora: ";
			cin >> edad;
			while (edad<18 || edad>75)
			{
				cout << "Por favor vuelva a ingresar la edad: ";
				cin >> edad;
			}
			cout << "Ingrese los años de servicio de la " << x << " trabajadora: ";
			cin >> años;
			while (años<0 || años>75 || años>edad-18)
			{
				cout << "Por favor ingrese nuevamente el dato: ";
				cin >> años;
			}
			if (edad>=55 || años>=25)
			{
				jubilados+=1;
				edadjubilados+=edad;
				cout << "Esta trabajadora ha cumplido con su tiempo laboral, puede jubilarse.\n\n";
			}
			else
			{
				activos+=1;
				edadactivos+=edad;
				cout << "Esta trabajadora no ha cumplido con su tiempo laboral, no puede jubilarse aun.\n\n";
			}
			cout << "\n";
		}
		else
		{
			cout << "Ingrese la edad del " << x << " trabajador: ";
			cin >> edad;
			while (edad<18 || edad>75)
			{
				cout << "Por favor vuelva a ingresar la edad: ";
				cin >> edad;
			}
			cout << "Ingrese los anos de servicio del " << x << " trabajador: ";
			cin >> años;
			while (años<0 || años>75 || años>edad-18)
			{
				cout << "Por favor ingrese nuevamente el dato: ";
				cin >> años;
			}
			if (edad>=60 || años>=30)
			{
				jubilados+=1;
				edadjubilados+=edad;
			}
			else
			{
				activos+=1;
				edadactivos+=edad;
			}
			cout << "\n";
		}
	}
	cout << "El numero de trabajadores activos es de " <<activos<< ".\n";
	cout << "El numero de trabajadores jubilados es de " <<jubilados<< ".\n";
	cout << "El promedio de edad de los trabajadores activos es de " <<edadactivos/activos<< ".\n";
	cout << "El promedio de edad de los trabajadores jubilados es de " <<edadjubilados/jubilados<< ".\n\n";
	system ("PAUSE");
 }


El problema radica en que nunca sale del ciclo while aunque se ingrese cualquiera de los caracteres f, F, m, M.

Por favor ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

[AYUDA] Clasificación entre hombres y mujeres...

Publicado por Alejandro (2 intervenciones) el 15/09/2012 19:40:22
porque te falta volver volver a preguntar que ingrese el sexo dentro del while también, sino no va a salir nunca, y puede volver a validar tu respuesta. Saludos

cout << "Ingrese el sexo del " << x << " trabajador/a (M/F): ";
cin >> sexo;
while (sexo!='f' || sexo!='m' || sexo!='F' || sexo!='M')

{
cout << "Sexo indefinido, intentelo de nuevo: ";
cin >> sexo;
cout << "Ingrese el sexo del " << x << " trabajador/a (M/F): ";
cin >> sexo;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar