Ayuda procedimiento y función para leer una frase
Publicado por Rass (7 intervenciones) el 16/06/2012 11:51:42
Hola a todos.
Tengo que entregar una práctica de Pascal, ya la tengo terminada y me compila bien, pero al leer la frase introducida (es un programa que mediante un menú puedes seleccionar distintas acciones que hacer con una frase introducida por el usuario) se que como colgado el programa, si no introduces la frase salta una excepción, y si la introduces se queda pillado y no avanza más. Lo he estado mirando, y creo que el problema solo puede estar en una función y un procedimiento, pero no consigo ver el problema.
Gracias por vuestra atención, un saludo.
Tengo que entregar una práctica de Pascal, ya la tengo terminada y me compila bien, pero al leer la frase introducida (es un programa que mediante un menú puedes seleccionar distintas acciones que hacer con una frase introducida por el usuario) se que como colgado el programa, si no introduces la frase salta una excepción, y si la introduces se queda pillado y no avanza más. Lo he estado mirando, y creo que el problema solo puede estar en una función y un procedimiento, pero no consigo ver el problema.
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
function dividir_frase(frase:STRING; var lista:t_lista_pal):boolean;
var
i:integer;
marca:integer;
cantidad:integer;
begin
marca:=1;
i:=2;
while (i<=length(frase)) or (lista.num_pal<max_pal) do
begin
if (frase[i]<>' ') and (frase[i-1]=' ') then marca:=i;
if ((frase[i]=' ') and (frase[i-1]<>' ')) or ((frase[i]<>' ') and (i=length(frase))) then
begin
if i<length(frase) then cantidad:=i-marca
else cantidad:=i-marca+1;
lista.palabras[lista.num_pal+1].pal:=copy(frase,marca,cantidad);
lista.palabras[lista.num_pal+1].long:=cantidad;
if i<=length(frase) then dividir_frase:=false
else dividir_frase:=true;
end;
end;
if i<=length(frase) then dividir_frase:=false
else dividir_frase:=true;
end;
procedure leer_frase(var pal:t_lista_pal);
var
frase:string;
val:boolean;
begin
repeat
writeln('Introduzca una frase de maximo 10 palabras y cada palabra de un maximo de 10 caracteres');
readln(frase);
val:=(dividir_frase(frase,pal) and longitud_val(pal));
until val=true;
end;
Gracias por vuestra atención, un saludo.
Valora esta pregunta


0