RE:¿Como leer un SRING usando solo el tipo CHAR?
El objeto del programa es buscar en una sopa de letras una palabra. No se puede usar el tipo STRING para leer la palabra a buscar. Las sopas de letras vienen dadas en un fichero de texto. Pero, ese no es el problema. El problema viene cuando pretendo leer una cadena de CHAR por el Input del programa, me hace cosas raras. No me queda más remedio de usar STRING en esa parte del programa. Tengo que hacer el sigiente procedimiento solo con el tipo CHAR:
procedure leer_vector(var p:vector;var lp,ne:integer);
var
palabra:string[10];
ok:boolean;
i:integer;
c:char;
begin
ok:=false;
repeat
writeln;
write(' Introduzca la palabra que desea buscar: ');
readln(palabra);
if (length(palabra)=1) or (length(palabra)>9) then
begin
writeln(' Palabra no valida');
writeln;
end
else ok:=true;
until ok;
for i:=1 to length(palabra)+1 do
begin
p[i]:=palabra[i];
end;
lp:=length(palabra);
for i:=length(palabra)+1 to max do p[i]:='*';
writeln;
end;
Y no soy capaz. Se me escapa por ejemplo controlar si la cadena es demasiado largo y cosas asi. Necesitaria un procedimienti distinto a este de mis intentos:
program leer_vector(Input,Output);
type
vector = packed array[1..10]of char;
var
i,j,lp :integer;
ok : boolean;
p : vector;
c:char;
begin
ok:=false;
repeat
for i:=1 to 10 do p[i]:='*';
writeln;
write('Introduzca la palabra a buscar: ');
i:=1;
repeat
read(c);
if c<>chr(10) then p[i]:=c;
i:=i+1;
until (c=chr(10)) or (i>10);
writeln;
if (p[2]='*') or (p[9+1]<>'*') then writeln('Palabra no valida!')
else begin
ok:=true;
end;
writeln;
writeln;
for i:=1 to 10 do write(p[i]);
until ok;
readln;
end.
Gracias tio.