Автор: anka 29.12.2003 1:19
люди помогите!!!!!!!!надо срочно написать прогу: выведите символы стоки в обратном порядке: "A man, a plan. a canel-Panama"
Впринципе прога есть , тока она из файла не читает=(
Код
type
PData=^TData;
TData=record
sh:char;
Next:Pdata;
end;
var
Data:PData;
f:Text;
procedure reverse_print(Data:PData);
var
p:PData;
i,j:byte;
function getsize(Data:PData):byte;
var
p:PData;
n:byte;
begin
n:=0;
p:=Data;
while p<>nil do begin
n:=n+1;
p:=p^.Next;
end;
getsize:=n
end;
begin
for j:=getsize(p) downto 1 do begin
for i:=1 to j do p:=p^.Next;
write(p^.sh);
p:=Data;
end
end;
Procedure ReadData(var f:Text;var Data:Pdata);
var
p,q:PData;
begin
{$I-}reset(f);{$I+}
if IOResult<>0 then begin Exit; end;
New(p);q:=p;
repeat
q^.Next:=nil;
{$I-}read(f,q^.sh);{$I+}
if IOResult<>0 then begin
while p<>nil do begin q:=p^.Next; Dispose(p);p:=q;end;
Exit;
end;
if not Eof(f) then begin New(q^.Next); q:=q^.Next; end;
until Eof(f);
Data:=p;
end;
begin
WRITELN('PALINDROM PROGRAM ');
Assign(f,'inp.txt');
ReadData(f,Data);
reverse_Print(Data);
end.
Заключайте листинги программ в теги [ code ] [ / code] (без пробелов)
Автор: trminator 29.12.2003 14:31
Модет, список лучше двусвязный завести? По нему проще будет двигаться вперед-назад. Хотя, может, препод требует односвязный тогда можно проигнорировать препода ;D
Автор: dushik 30.12.2003 20:13
Я не понимаю, в чём собственно сложность "обратного" вывода?
Объявляешь строку как s[29]:string;
Код
for i:= 29 downto 1 do
write(s[i]);
Или я что-то нитак понял?
Автор: trminator 30.12.2003 21:19
Цитата
Или я что-то нитак понял?
Имеется ввиду не выведение строки (массива) в обратном виде, а выведение линейного списка в обратном порядке. А точнее, его чтение.