IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Двухсвязные цикличные списки, Надо удалять каждый k-ый элемент из списка пока
DarkWishmaster
сообщение 2.04.2011 20:13
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Привет. Только сейчас начал изучать динамичиские структуры, и вот задача:
Дан двухсвязный список их N игроков. Начиная с игрока m, каждый k-ый игрок должен быть удален из игры.

Вот что у меня получилось:
КОД (Показать/Скрыть)


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
volvo
сообщение 3.04.2011 11:56
Сообщение #2


Гость






Значит, смотри, как решается твоя задача с использованием циклических списков (поищи по форуму со словом казнь, найдешь и другие решения).

Вот программа: (Показать/Скрыть)
В комментариях все сказано. Только одно замечание: в процедуре Start идет цикл от 1 до K. Это значит, что при отсчете не считается тот человек, с которого отсчет начинается. Если надо, чтоб и он учитывался, то... Ну, сам подумай, что надо сделать smile.gif

Update
Кстати, есть еще кое-что, что можно сделать. К примеру, если у тебя K > N, то зачем тебе делать целый круг (а может и не один, смотря насколько K больше чем N), перед тем, как ты доберешься до игрока, которого надо удалить? Подумай, что можно сделать, чтоб не крутить циклы впустую...
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 3.04.2011 12:18
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


volvo, спасибо огромное! всё очень понятно обьяснил, теперь могу переходить к стекам и очередям
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 9.04.2011 20:11
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата
Update
Кстати, есть еще кое-что, что можно сделать. К примеру, если у тебя K > N, то зачем тебе делать целый круг (а может и не один, смотря насколько K больше чем N), перед тем, как ты доберешься до игрока, которого надо удалить? Подумай, что можно сделать, чтоб не крутить циклы впустую...

Если K>N тогда K:=K-N;

Сообщение отредактировано: DarkWishmaster - 9.04.2011 20:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.04.2011 20:16
Сообщение #5


Гость






Цитата
Если K>N тогда K:=K-N;
Уже лучше. А теперь представь, что K = 25, а N = 7, например... Что тогда делать будешь?
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 9.04.2011 20:36
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(volvo @ 9.04.2011 20:16) *

Уже лучше. А теперь представь, что K = 25, а N = 7, например... Что тогда делать будешь?

K mod N
Пробовал рисовать связи, вот что получается:
Прикрепленное изображение

Сообщение отредактировано: DarkWishmaster - 9.04.2011 20:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.04.2011 14:58
Сообщение #7


Гость






Цитата
Пробовал рисовать связи, вот что получается:
И я пробовал. У меня вот что получилось:
Прикрепленное изображение

Что именно из установки указателей непонятно? Попробуй нарисовать такую же схему, как у меня, для "кольца", в котором уже есть 2 элемента, и ты добавляешь третий, и покажи, что получилось.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 3:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"