История изменений
Исправление bormant, (текущая версия) :
Можно было пойти таким путём:
{$H+}
program RevWords;
type
PWordNode = ^TWordNode; {list of words}
TWordNode = record
Chars: String;
Next: PWordNode;
end;
procedure AddWord(var First: PWordNode);
var
tmp: PWordNode;
begin
New(tmp);
tmp^.Chars := '';
tmp^.Next := First;
First := tmp;
end;
procedure AddToWord(Words: PWordNode; c: char);
begin
with Words^ do Chars := Chars + c;
end;
procedure WriteWord(Words: PWordNode);
begin
Write(Words^.Chars);
end;
procedure WriteWords(First: PWordNode);
begin
if First <> nil then begin
WriteWord(First);
First := First^.Next;
end;
while First <> nil do begin
Write(' ');
WriteWord(First);
First := First^.Next;
end;
end;
procedure CleanUpWords(var First: PWordNode);
var
tmp: PWordNode;
begin
while First <> nil do begin
tmp := First;
First := First^.Next;
Dispose(tmp);
end;
end;
var
c: Char;
SpcPressed: boolean;
Words: PWordNode;
begin
while not SeekEof do begin
//Words := nil;
SpcPressed := True;
while not EoLn do begin
Read(c);
if c > ' ' then
if SpcPressed then begin
AddWord(Words);
AddToWord(Words, c);
SpcPressed := False;
end
else
AddToWord(Words, c);
else if c in [#9, ' '] then
SpcPressed := True;
end;
WriteWords(Words);
WriteLn;
CleanUpWords(Words);
end;
end.
Исправление bormant, :
Можно было пойти таким путём:
{$H+}
program RevWords;
type
PWordNode = ^TWordNode; {list of words}
TWordNode = record
Chars: String;
Next: PWordNode;
end;
procedure AddWord(var First: PWordNode);
var
tmp: PWordNode;
begin
New(tmp);
tmp^.Chars := '';
tmp^.Next := First;
First := tmp;
end;
procedure AddToWord(Words: PWordNode; c: char);
begin
with Words^ do Chars := Chars + c;
end;
procedure WriteWord(Words: PWordNode);
begin
Write(Words^.Chars);
end;
procedure WriteWords(First: PWordNode);
begin
if First <> nil then
begin
WriteWord(First);
First := First^.Next;
end;
while First <> nil do
begin
Write(' ');
WriteWord(First);
First := First^.Next;
end;
end;
procedure CleanUpWords(var First: PWordNode);
var
tmp: PWordNode;
begin
while First <> nil do
begin
tmp := First;
First := First^.Next;
Dispose(tmp);
end;
end;
var
c: Char;
SpcPressed: boolean;
Words: PWordNode;
begin
while not SeekEof do
begin
//Words := nil;
SpcPressed := True;
while not EoLn do
begin
Read(c);
if c > ' ' then
if SpcPressed then
begin
AddWord(Words);
AddToWord(Words, c);
SpcPressed := False;
end
else
AddToWord(Words, c);
else if c in [#9, ' '] then
SpcPressed := True;
end;
WriteWords(Words);
WriteLn;
CleanUpWords(Words);
end;
end.
Исходная версия bormant, :
Можно было пойти таким путём:
{$H+}
program RevWords;
type
PWordNode = ^TWordNode; {list of words}
TWordNode = record
Chars: String;
Next: PWordNode;
end;
procedure AddWord(var First: PWordNode);
var
tmp: PWordNode;
begin
New(tmp);
tmp^.Chars := '';
tmp^.Next := First;
First := tmp;
end;
procedure AddToWord(Words: PWordNode; c: char);
begin
with Words^ do Chars := Chars + c;
end;
procedure WriteWord(Words: PWordNode);
begin
Write(Words^.Chars);
end;
procedure WriteWords(First: PWordNode);
begin
if First <> nil then
begin
WriteWord(First);
First := First^.Next;
end;
while First <> nil do
begin
Write(' ');
WriteWord(First);
First := First^.Next;
end;
end;
procedure CleanUpWords(var First: PWordNode);
var
tmp: PWordNode;
begin
while First <> nil do
begin
tmp := First;
First := First^.Next;
Dispose(tmp);
end;
end;
var
c: Char;
SpcPressed: boolean;
Words: PWordNode;
begin
while not SeekEof do
begin
//Words := nil;
SpcPressed := True;
while not EoLn do
begin
Read(c);
if c > ' ' then
if SpcPressed then
begin
AddWord(Words);
AddToWord(Words, c);
SpcPressed := False;
end
else
AddToWord(Words, c);
else if c in [#9, ' '] then
SpcPressed := True;
end;
WriteWords(Words);
WriteLn;
CleanUpWords(Words);
end;
end.
[/pascal]