![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Ex1Le |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
По кругу располагаются n человек. Ведущий считает по кругу, начиная с первого, и выводит ("казнит" m-го человека. Круг смыкается, счет возобновляется со следующего после "казненного"; так продолжается, пока "в живых" останется только один человек. Найти номер оставшегося "в живых" человека, а также для заданного n найти такое m>1, при котором "в живых" останется первый.
Код var i,n,k,index:integer; num:array[1..5000] of integer; begin write('Vvedite kolichestvo chelovek v krugu'); readln(n); write('Vvedite chislo, do kotorogo vedetsya chet'); readln(k); for i:=1 to n do num[i]:=i; writeln('Isxodnaya numeraciya:1,2,... ,',n); write('Poryadok isklucheniya:'); index:=0; while n>1 do begin i:=0; repeat inc(i,1); inc(index,1); if index=n then index:=0 until i=k; if index <>i then begin write(num[index]:8); for i:=index to n-1 do num[i]:=num[i+1]; dec(index,1) end else write(num[n]:8); dec(n,1) end; write('Ostalsya chelovek pod nomerom',num[n]); readln end. де-то кроется ошибка...потому что первым вылетает последний человек...потом еще считает 0 за человека, и иногда вылетает 2 человека под одним номером |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
А поиском воспользоваться совсем лень?
Казнь |
Ex1Le |
![]() ![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
:p2: :yessss: respect
|
Ex1Le |
![]() ![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
хмм...почему то при числах n=10, m=2, k=8 он перепрыгивает казнь 5го и 9го
( т.е. 10м должны казнить первого а прога считает ка 5го...а до 6го человека считает правильно...) |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ну, во-первых, по твоему условию K вообще всегда должно быть равно N, так как ты хочешь узнать, какого человека казнят ПОСЛЕДНИМ...
А во-вторых, если ты попробуешь нарисовать картинку на листе бумаги, то очень быстро убедишься, что при наличии 10-ти осужденных последним будет казнен НЕ №1, а №5, о чем и говорит программа... |
Ex1Le |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
:no: Внимательно !!!
2-4-6-8-10-3 ... Все правильно ... А дальше? 4-го уже казнили, поэтому будь добр 5-го пропустить, и казнить 7-го !!! Вот окончательный порядок: 2-4-6-8-10-3-7-1-9-5 (!!!) |
Ex1Le |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
:D нас 5 человек и все как я посчитали :D
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Значит, учитесь считать, прежде чем решать такие задачи ... Как же ты проверять результаты будешь? А та последовательность, которую я привел, ничего тебе не говорит?
|
Ex1Le |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
ты прав как всегда....:flowers:
|
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 1:14 |