Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 22:16   #1
Гвендолин
 
Регистрация: 30.03.2009
Сообщений: 5
Печаль Динамическая память.Списки.

Очень нужна помощь с решением этой задачи. Буду вам очень благодарна.


(«Считалка».) n ребят располагаются по кругу. Начав отсчет от первого, удаляют каждого k-го, смыкая круг после каждого удаления. Определить порядок удаления ребят из круга.
Решение этой задачи описать в виде программы (ее исходные данные—натуральные числа n и k), которая должна напечатать номера ребят в том порядке, как они удаляются из круга.
Гвендолин вне форума Ответить с цитированием
Старый 30.03.2009, 22:24   #2
ИльяМалиновский
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 30
По умолчанию

А с какого человека продолжают счёт? С того, который следующий за вышедшим или с начинавшего в первый раз?
ИльяМалиновский вне форума Ответить с цитированием
Старый 30.03.2009, 22:27   #3
rusell
Пользователь
 
Аватар для rusell
 
Регистрация: 30.03.2009
Сообщений: 20
По умолчанию

писать программу тебе не буду, а вот кусочек могу подсказать!
Код:
Type
    P = ^TMember
    TMember = Record
                        num: Integer;
                        next: P;
                    End;

var tmp, del: P;

begin
  New(tmp);
  tmp^.next := New(P^.next);
создаешь кружок в цыкле.
...
по кругу добираешься до нужного, меняешь адреса:
del := tmp^.next;
tmp^.next := tmp^.next^.next;
и удаляешь к-ого

Dispose(tmp^.next);

end.
Самый приятный момент в написании кода, это когда кажется, что код почти готов!
rusell вне форума Ответить с цитированием
Старый 30.03.2009, 22:38   #4
Гвендолин
 
Регистрация: 30.03.2009
Сообщений: 5
По умолчанию

Начиная с первого))
Гвендолин вне форума Ответить с цитированием
Старый 30.03.2009, 22:49   #5
ИльяМалиновский
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 30
По умолчанию

А если первый выходит из круга, то с какого?
ИльяМалиновский вне форума Ответить с цитированием
Старый 30.03.2009, 22:49   #6
Гвендолин
 
Регистрация: 30.03.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от rusell Посмотреть сообщение
писать программу тебе не буду, а вот кусочек могу подсказать!
Cпс за подсказку))теперь будет над чем поломать голову.

Цитата:
Сообщение от ИльяМалиновский Посмотреть сообщение
А если первый выходит из круга, то с какого?
Ты не так понял...просто с первого начинается круг(с него во же начинается нахождение k-го элемента и его удалиние)потом опять выходит круг и так далие. и это продолжается до того, пока не удаляться все элементы.

Вроде так...если честно, то я сама немного запуталась...в этой задаче вроде есть цикл...

Последний раз редактировалось Stilet; 31.03.2009 в 11:26.
Гвендолин вне форума Ответить с цитированием
Старый 31.03.2009, 11:12   #7
ИльяМалиновский
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 30
По умолчанию

Код:
var
i: integer;
k: integer;
a: array[1..100,1..2] of integer; // связный список, обозначающий людей
n: integer; // число людей в круге
tec: integer; // текущий номер человека

begin
 readln(n);
 a[1,1]:= n;
 a[1,2]:= 2;
 for i:= 2 to n-1 do
  begin
  a[i,1]:= a - 1;
  a[i,2]:= a + 1;
  end;
 a[n,1]:= n-1;
 a[n,2]:= 1;

 while n > 0 do
  begin
  tec:= 1;
  for i:= 1 to k do
   begin
   tec:= a[tec,2];
   end;
  writeln(tec); // он выходит из круга
  a[a[tec,1],2]:= a[tec,2]; 
  a[a[tec,2],1]:= a[tec,1];
  n:= n - 1;
  end;
end.
Вроде можно попробовать так реализовать циклический дважды связанный список. Он содержит номера соседей для каждого стоящего в нём человека.
ИльяМалиновский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память в Борланд Си... Считает но не все... Катюшенька Помощь студентам 4 16.02.2009 17:59
Текстовый редактор (динамическая память) quf Паскаль, Turbo Pascal, PascalABC.NET 2 21.04.2008 16:59
Динамическая память MadDog__ Помощь студентам 2 22.11.2007 00:05