Показать скрытый текст
Program JosivFlaviye;
Uses CRT;
Const n: integer = 300;
Type tp = ^bt;
bt = record
inf: integer;
lnk: tp;
off: Boolean;
End;
Var t, top: tp;
f: tp;
i:integer;
k: integer;
o: integer;
Procedure Print;
Begin
f := t;
For i := 1 to n do
Begin
Write(f^.inf,' ');
f := f^.lnk;
End;
End;
Procedure Schet(s: Byte);
Begin
t := top;
For o := 1 to n - 1 do
Begin
i := 1;
Repeat
If (t^.off = False) then inc(i);
t := t^.lnk;
Until (i = k) and (t^.off = False);
Writeln('Вычеркнули ',t^.inf);
t^.off := True;
End;
End;
Begin
ClrScr;
top := nil;
For i := n downto 1 do
Begin
t := New(tp);
t^.inf := i;
t^.lnk := top;
t^.off := False;
top := t;
End;
f := t;
For i := 1 to n-1 do
Begin
f := f^.lnk;
End;
f^.lnk := t;
Print;
Write(#13#10,'До скольки считать: '); Readln(k);
Schet(k);
While (t^.off = True) do
t := t^.lnk;
Writeln('Остался ',t^.inf);
ReadKey;
End.