Помощь - Поиск - Пользователи - Календарь
Полная версия: Ссылки и указатели
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
anka
люди помогите!!!!!!!!надо срочно написать прогу: выведите символы стоки в обратном порядке: "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
Модет, список лучше двусвязный завести? По нему проще будет двигаться вперед-назад. Хотя, может, препод требует односвязный smile.gif тогда можно проигнорировать препода  ;D
dushik
Я не понимаю, в чём собственно сложность "обратного" вывода?
Объявляешь строку как s[29]:string;
Код

for i:= 29 downto 1 do
write(s[i]);

Или я что-то нитак понял?
trminator
Цитата
Или я что-то нитак понял?

Имеется ввиду не выведение строки (массива) в обратном виде, а выведение линейного списка в обратном порядке. А точнее, его чтение.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.