Diferenciar el sexo de las personas en un programa que estoy diseñando

Primero que nada, quisiera agradecerte con la solución del programa anterior me ayudaste bastante. Ahora tengo una duda con otro programa lo que pasa es que se me pide un programa en que ingrese algunas preguntas, dentro de las cuales esta el sexo, si es masculino me muestre la cantidad de varones y el promedio de edad de estos y lo mismo para las mujeres. El problema esta en que no se hacer la diferencia para hombres y mujeres. Aquí te va el programa para que me lo revises. Gracias
program curso_por_sexo;
uses
wincrt;
var
nom:string[20];
edad,cant1,cant2,cant,sum1,sum2:real;
resp,sexo:char;
prom1,prom2:real;
begin
resp:='s';
cant1:=0;
cant2:=0;
sum1:=0;
sum2:=0;
while(resp='S') or (resp='s') do
begin
writeln('INGRESE EL NOMBRE DEL ALUMNO/A:');
readln(nom);
writeln('INGRESE LA EDAD DEL ALUMNO/A:');
readln(edad);
writeln('INGRESE EL SEXO DEL ALUMNO, (M/F)');
readln(sexo);
writeln('¿DESEA CONTINUAR INGRESANDO DATOS? : S/N ');
readln(resp);
if sexo='m' then
begin
cant1:=cant1+1;
sum1:=sum1+edad;
end
else
cant2:=cant2+1;
sum2:=sum2+edad
end;
prom1:=sum1/cant1
prom2:=sum2/cant2
writeln('LA CANTIDAD DE ALUMNOS ES:',cant1:3:1);
writeln('LA EDAD PROMEDIO DE VARONES ES:',prom1:3:1);
writeln('LA CANTIDAD DE ALUMNAS ES:',cant2:3:1);
writeln('LA EDAD PROMEDIO DE DAMAS ES:',prom2:3:1);
end.
Respuesta
1
He revisado el código que me envías y veo que esta correcto en un 99%.
Solo descubrí dos detalles: el primero es que no especificas el final del bucle while. Lo debes colocar inmediatamente después del calculo de los promedios y antes de la impresión de los resultados (writeln).
El otro detalle es que (y el que supongo de ocasiona el quebradero de cabeza) esta en la condición del bloque IF, la cual pregunta de esta manera: If sexo='m' then
Bueno, yo te aconsejo que incluyas la opción de que si el sexo fue introducido en mayúsculas por el usuario. En otras palabras debes escribir dicha linea de esta manera:
if sexo='M' or sexo='m' then
o mejor aun:
if Upcase(sexo)='M' then
La sentencia Upcase convierte un carácter alfabético (una letra) a su correspondiente mayúscula.
Espero que con esto se solucione tu problema, porque como ya te dije, no he encontrado otro posible error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas