Advertisement
dxvmxnd

Untitled

Mar 17th, 2024
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. uses
  2. System.SysUtils;
  3.  
  4. type
  5. PPerson = ^TPerson;
  6. TPerson = record
  7. Number: Integer;
  8. Next: PPerson;
  9. end;
  10.  
  11. function CreateCircle(N, K: Integer): string; stdcall;
  12. var
  13. head, curr, prev: PPerson;
  14. i: Integer;
  15. RemovedNumbers: string;
  16. begin
  17. // Создаем круг людей
  18. New(head);
  19. head.Number := 1;
  20. curr := head;
  21. for i := 2 to N do
  22. begin
  23. New(curr.Next);
  24. curr := curr.Next;
  25. curr.Number := i;
  26. end;
  27. curr.Next := head; // Замыкаем кольцо
  28.  
  29. // Удаляем каждого K-го человека из кольца
  30. curr := head;
  31. RemovedNumbers := '';
  32. while curr.Next <> curr do
  33. begin
  34. // Находим K-го человека
  35. for i := 1 to K - 1 do
  36. begin
  37. prev := curr;
  38. curr := curr.Next;
  39. end;
  40.  
  41. // Добавляем номер выбывшего человека в переменную типа string
  42. RemovedNumbers := RemovedNumbers + IntToStr(curr.Number) + ' ';
  43.  
  44. // Удаляем выбывшего человека из кольца
  45. prev.Next := curr.Next;
  46. Dispose(curr);
  47. curr := prev.Next;
  48. end;
  49.  
  50. // Остается последний человек в кольце
  51. Result := 'Выбывают: ' + RemovedNumbers + 'Остается: ' + IntToStr(curr.Number);
  52.  
  53. // Освобождаем память
  54. Dispose(curr);
  55. end;
  56.  
  57. exports
  58. CreateCircle;
  59.  
  60. begin
  61. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement