![]() |
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 человека под одним номером |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 1:55 |