Помощь - Поиск - Пользователи - Календарь
Полная версия: игра в казнь
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ex1Le
По кругу располагаются 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
А поиском воспользоваться совсем лень?
Казнь
Ex1Le
:p2: :yessss: respect
Ex1Le
хмм...почему то при числах n=10, m=2, k=8 он перепрыгивает казнь 5го и 9го
( т.е. 10м должны казнить первого а прога считает ка 5го...а до 6го человека считает правильно...)
volvo
Ну, во-первых, по твоему условию K вообще всегда должно быть равно N, так как ты хочешь узнать, какого человека казнят ПОСЛЕДНИМ...

А во-вторых, если ты попробуешь нарисовать картинку на листе бумаги, то очень быстро убедишься, что при наличии 10-ти осужденных последним будет казнен НЕ №1, а №5, о чем и говорит программа...
Ex1Le
sad.gif казнять 2-4-6-8-10-3-5-7-9-1(!!) sad.gif
volvo
:no: Внимательно !!!
2-4-6-8-10-3 ... Все правильно ... А дальше? 4-го уже казнили, поэтому будь добр 5-го пропустить, и казнить 7-го !!!
Вот окончательный порядок:
2-4-6-8-10-3-7-1-9-5 (!!!)
Ex1Le
:D нас 5 человек и все как я посчитали :D
volvo
Значит, учитесь считать, прежде чем решать такие задачи ... Как же ты проверять результаты будешь? А та последовательность, которую я привел, ничего тебе не говорит?
Ex1Le
ты прав как всегда....:flowers:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.