Pascal/Turbo Pascal - tengo una tarea de programacion y no me funciona :(

<<>>
 
Vista:

tengo una tarea de programacion y no me funciona :(

Publicado por ayuda (1 intervención) el 23/04/2024 23:23:30
Necesito ayuda, tengo una tarea de programacion para el jueves 25 de abril de 2024 y el programa no me funciona bien, estoy empezando en esto de la programacion apenas estoy en primer semestre.
Mi programa esta en pascal
Tengo que hacer unos procedimientos (procedure) tiene que leer una oracion de la entrada y escribir: cual es la palabra mas larga, cual es la palabra mas corta y la cantidad de letras de la palabra mas larga y la palabra mas corta.
El programa segura esperando entradas hasta que introduzca el finalizador (un centinela, en este caso '.' El error es que el programa solo lee la primera letra y sigue esperando entradas aunque presiono enter seguira esperando entradas hasta que introduzca el separador '.' si escribí ocho palabras y a cada una le doy enter el programa solo cuenta las 8 primeras letras de las lineas que introducí
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
program Principal;
 
const
     SEPARADOR = ' ';
     FINALIZADOR = '.';
procedure leerPalabraLargo(var largo: Integer; var fin: Boolean);
var
  c: char;
begin
  largo := 0;
  fin := false;
  read(c);
 
while (c <> SEPARADOR) and (c <> FINALIZADOR) do
begin
  largo := largo + 1;
  read(c);
  end;
if c = FINALIZADOR then
  fin := true;
  readln;
end;
 
procedure leerOracionDatos (var cantPal, masLarga, masCorta : Integer);
var
  largo: Integer;
  fin: boolean;
begin
  cantPal := 0;
  masLarga := 0;
  masCorta := MaxInt;
  repeat
    leerPalabraLargo(largo, fin);
    cantPal := cantPal + 1;
    if largo > masLarga then
      masLarga := largo;
    if largo < masCorta then
      masCorta := largo;
 until fin;
end;
 
var
   cantPal, masLarga, masCorta : Integer;
 
begin
   write('Ingrese la oracion: ');
   leerOracionDatos(cantPal, masLarga, masCorta);
   writeln('Tiene ', cantPal:0, ' palabras. ');
   writeln('La palabra mas larga tiene ', masLarga:0, ' letras. ');
   writeln('La palabra mas corta tiene ', masCorta:0, ' letras. ');
end.

De antemano muchas gracias a quien me pueda ayudar
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