Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача Джозефуса
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DIAMOND
Помогите решить задачку, пожалуйста.

Отряд солдат окружен превосходящими силами противника. Надежда на победу без подкрепления исключается, однако для прорыва из лагеря имеется одна лошадь. Солдаты решабт выбрать одного человека и послать его за помощью. Они становятся в круг и из шляпы выбирается число N и одно из их имен. Производится счет счет по часовой стрелке по кругу, начиная с солдата с выбранным именем. Когда счетчик достигает N, соответвующий солдат удаляется из круга, а счет продолжается снова, начиная со следующего солдата. Последний оставшийся в круге солдат посылается за подмогой. Определите порядок удаления солдат из круга и имя оставшкгося солдата.

Заранее благодарен.
volvo
Ищи по форуму. Была нужная тебе программа, только с другим описанием... Она была под названием "Казнь"...
klem4
попробовал ради интереса решить ... заняться вообще нечем, моя верси про пиво smile.gif)) Если что не так, поправьте :

uses crt;
var
soldiers:array[1..10] of string =
('Вова.П','Б.Страуструп','Д.Буш','С.Шнуров','Некто','klem4','Билл гтс','Касперский',
'Н.Вирт','К.Митник');
i,n,Ncount,count:integer;

Begin

clrscr;

randomize;

count:=10;

NCount:=0;

repeat

n:=random(count)+1;

if NCount>=count then NCount:=0;

i:=NCount+1; NCount:=1;

repeat
if i=count then i:=0;
inc(i);
inc(NCount);
until Ncount=n;

NCount:=i;

writeln('Выбыл : ',soldiers[Ncount]);

for i:=NCount to count-1 do
soldiers[i]:=soldiers[i+1];

dec(count);

until count=1;

writeln;

writeln('За пивом сегодня идет : ',soldiers[1]);


readln;
End.



нашел лишнюю проверку if i=count then ... ненужна
volvo
klem4,
а зачем это ты каждый раз пересчитываешь
repeat
n:=random(count)+1; { <--- вот это ? }

По-моему, у тебя будут вообще совершенно случайные результаты...
klem4
ааа... нужно однаковое N видимо, я просто недопонял.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.