Ayuda urgente en pascal

Seria de gran ayuda resolver este problema.
Cree un programa en pascal que tenga:
1. Una función que lea un numero entero validando que se encuentre en un intervalo[x1,x2]
2. Un procedimiento que compare dos string y si son iguales incremente un contador.
3. Una función que compare dos números reales y entregue el menor de ellos.
4. Una función que ingresados dos números de tipo entero, entregue la suma de ellos.
En el begin principal utilizando las funciones y procedimientos anteriores se debe:
a) Ingresar el apellido y la edad (entre 1 y 110) de N personas con 0<N<70
b) determinar si hay alguna persona de apellido lillo o no la hay.
c) Cual es la edad más baja.
d) La edad promedio.
Respuesta
1
¿Y quieres que sea en Pascal normal? Nada de Delphi u otro Pascal orientado a objetos. Es que hoy en día es una desventaja muy grande usar ese tipo de lenguajes antiguos, fíjate todo el pollo que se puede montar para corregir una entrada errónea. Porque creo que lo que dices es que los datos se toman del teclado. ¿No?
Es en dev pascal, es una tarea para la universidad de un ramo llamado programación.
Si pudieras ayudarme seria genial!.
Gracias.
Descargue Dev Pascal para verificar que funciona el programa que voy a hacer.
Lo primero que veo raro es la función que compare dos números reales y entregue el menor. Tendría que comparar números enteros, ya que está visto que se va a usar para comparar la edad recién tecleada con la más baja que hay hasta ese momento y esos dos son números enteros.
Pero voy a hacer lo que me pides aunque se añada una complicación de conversión de datos que sería innecesaria. La edad más baja será un número real en lugar de entero.
Luego, Dev Pascal comete un error muy fuerte y te saca del programa si al querer leer un número entero introduces letras. Por eso la función de leer la edad es un poco rara, pero imprescindible para que no perdamos todos los datos introducidos hasta ese momento si pulsamos letras en vez de números.
Como dices que N debe ser < 70, he puesto que cuando se hayan introducido 69 datos ya no puedas introducir unoi más y te dé ya los resultados.
Bueno, lo mejor es que pruebes el programa y si no entiendes algo me lo dices.
Ahí va, espero que puedas usar copiar y pegar para meterlo en tu Dev Pascal.
--------------------------------------------
program PromedioEdad;
const
  EdadMinima : integer = 1;
  EdadMaxima : integer = 110;
  ApellidoBuscado : string = 'LILLO';
var
  Edad, SumaEdades, NumeroVecesBuscado, DatosIntroducidos : integer;
  EdadPromedio, EdadMasBajaReal: real;
  Apellido, Repetimos : string;
function EdadLeidaValidada : integer;
var
  Edad, CodigoError: integer;
  s : string;
begin
  {Se lee un string en lugar de la edad directamente porque daba error
   y se salía del programa si no se introducian datos numéricos}
  repeat
    write('Edad entre ',EdadMinima,' y ',EdadMaxima,' : ');
    reset(input);
    read(s);
    val(s, edad, CodigoError);
    if CodigoError <> 0 then edad := EdadMinima - 1;
  until (Edad>=EdadMinima) and (edad <= EdadMaxima);
  EdadLeidaValidada := Edad
end;
procedure IncrementarSiRepe(x,y : string; var i: integer);
begin
  if x = y then i := i+1
end;
function MinimoReal(x, y: real) : real;
begin
  if x > y then MinimoReal := y else MinimoReal := x
end;
function SumaEnteros(i, j: integer) : integer;
begin
  SumaEnteros := i +j
end;
begin
  repeat
    NumeroVecesBuscado := 0;
    DatosIntroducidos := 0;
    EdadMasBajaReal := EdadMaxima + 1;
    SumaEdades := 0;
    repeat
      reset(input);
      write('Apellido', DatosIntroducidos+1,' (Para terminar escriba FIN) : ');
      read(apellido);
      apellido := upcase(Apellido);
      if apellido <> 'FIN' then
        begin
          Edad := EdadLeidaValidada;
          SumaEdades := SumaEnteros(SumaEdades, Edad);
          EdadMasBajaReal := MinimoReal(EdadMasBajaReal, Edad);
          IncrementarSiRepe(Apellido, ApellidoBuscado, NumeroVecesBuscado);
          DatosIntroducidos := DatosIntroducidos+1
        end
    until (Apellido = 'FIN') or (DatosIntroducidos = 69);
    If DatosIntroducidos > 0 then
      begin
        writeln;
        writeln(ApellidoBuscado, ' aparece       :   ',NumeroVecesBuscado,' veces.');
        writeln('La edad menor es    : ', EdadMasBajaReal:3:0);
        EdadPromedio := SumaEdades / DatosIntroducidos;
        writeln('La edad promedio es : ', EdadPromedio:6:2)
      end;
    writeln;
    write('        Pulse S y ENTER si quiere introducir otros datos ');
    reset(input);
    readln(Repetimos);
    writeln
  until upcase(Repetimos) <> 'S'
end.
--------------------------------------
Y eso es todo. Espero que te sirva y lo entiendas. No olvides puntuar y cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas