Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.12.2022
Сообщений: 19

Задача Иосифа (через уравнение)

18.05.2024, 17:24. Показов 552. Ответов 3

Студворк — интернет-сервис помощи студентам
Понимаю, что этой задачей кишит уже весь форум, но мне необходимо 3 варианта решения. 2 варианта есть, с третьим -- проблема, описанная после некорректного моего кода.


Условие задачи:

По кругу располагаются п человек. Ведущий считает по кругу, начиная с первого, и выводит («казнит») m-го
человека. Круг смыкается, счет возобновляется со следующего после «казненного»;
так продолжается, пока «в живых» останется только один человек. Найти номер оставшегося «в живых» человека,
а также для заданного п найти такое т > 1, при котором «в живых» останется первый.

Мой код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var
n, m, i, j: integer;
 
begin
write('Введите количество человек (n): ');
readln(n);
write('Введите номер, по которому будут казнить (m): ');
readln(m);
 
var people: array[1..100] of boolean;
for i := 1 to n do
people[i] := true;
 
i := 1;
 
while n > 1 do
begin
j := 0;
repeat
if people[i] then
Inc(j);
if j = m then
begin
people[i] := false;
Dec(n); 
break;
end;
Inc(i);
if i > n then
i := 1;
until false;
end;
 
for i := 1 to n do
if people[i] then
begin
writeln('Номер оставшегося в живых человека: ', i);
break;
end;
 
for i := 2 to m do
if n mod i = 1 then
begin
writeln('номер, при котором в живых останется первый: ', i);
break;
end;
end.

Нуждаюсь в исправлении данного кода, так как в строках: 16, 43, 51 выбивает ошибку "параметр цикла for должен описываться в заголовке". Сколько раз не пытался вникнуть в суть этой проблемы -- не понимаю, как исправить. ГПТ не предлагать. Он...не помогает(

Если что -- пытаюсь решить методом уравнения
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2024, 17:24
Ответы с готовыми решениями:

Задача Иосифа Флавия
По окружности в направлении движения часовой стрелки расположены n последовательных натуральных чисел от 1 до n . При перемещении по числам...

Задача Иосифа Флавия с использованием списков
Народ, добрый день, вот код программы: program legend; uses crt; type pItem = ^tItem; tItem = record data: byte; ...

Математическое моделирование. Задача Иосифа Флавия
Задача Иосифа Флавия: Существует легенда, что Иосиф Флавий - известный историк первого века - выжил и стал известным благодаря...

3
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
18.05.2024, 19:26
Ошибки выводит красным крестом, а жёлтый "!" это предупреждение.

Делать свалку объявления переменных в начале программы это принцип из древнепаскальных диалектов, для которых всё ещё написаны учебники 20-летней давности.
Так легко допустить ошибку, к примеру использовав переменную цикла (ваш счётчик i) вне цикла.

Это особенно легко, считая что вы ещё, похоже, не поняли как важно делать правильные отступы в коде.
Ну, я тоже сначала не понимал - но желательно когда показываете свой код другим людям - сначала тыкать ПКМ>>"Форматировать код".

Ну, собственно чтобы исправить - переменные надо объявлять как можно ближе к их первому использованию:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
##
 
// Если надо вернуть что-то из блока кода - объявляем прямо перед этим блоком
var a: integer;
begin
  // Объявление, присвоение и ввод на 1 строке
  // Тип integer - компилятору это и так понятно, потому что присваивают integer
  // Явно писать "var x: integer := ..." не обязательно
  var x := ReadlnInteger('x =');
  // Тут использовать можно
  x.Println;
  a := x;
end;
a.Println;
// А это уже не сработает
//x.Println;
 
// А тут var прямо в заголовке цикла
for var i := 1 to 10 do
  i.Print;
(это вся программа а не огрызок, ## это заголовок короткой программы, без begin-end.)

Добавлено через 15 минут
P.S. Свой LLM вроде ChatGPT, но меньшего масштаба, специально для ABC.Net натренировать было бы классно, но пока за это никто ещё не взялся.
Пока что если вам нужна информация - надо или открывать меню "Помощь" в редакторе, или брать 1 из источников информации на официальном сайте: https://pascalabc.net/
0
0 / 0 / 0
Регистрация: 27.12.2022
Сообщений: 19
18.05.2024, 19:36  [ТС]
А этот код точно относится к условию задачи? При запуске и вводе одного из чисел, мы на выходе получаем то же число и в качестве номера "живого", и в качестве "т". Разве они должны совпадать с ранее введённым во всех случаях? Далее же вообще идёт просто перечисление всех чисел от 1 до 10.

Как минимум, это выглядит странно. Или это в качестве примера?...
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
18.05.2024, 23:10
Этот код - пример последнего параграфа перед ним, не более.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2024, 23:10
Помогаю со студенческими работами здесь

Задача Иосифа
Что-то жесткая задача... По кругу располагаются n=20 человек. Ведущий считает по кругу, начиная с первого, и выводит («казнит») m-го...

Задача Иосифа Флавия
Хмм, а что вы думаете о нем и его задаче? Очень интересно Ваше мнение т.к. пишу по этой теме работу

Задача Иосифа Флавия
100 человек стоят по кругу, им присвоены номера от 1 до 100. Они начинают считаться и каждый 19-й по счету выходит из круга. Таким...

Задача Иосифа Флавия
В современной формулировке задачи участвует n воинов и убивают каждого m-го. Требуется определить номер k начальной позиции воина, который...

Задача Иосифа Флавия
"N воинов из одного войска убивают каждого M-го другого. Необходимо определить номер начальной позиции воина, который должен быть остаться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru