
СРОЧНО!!!!!!!!! Пмоготи решить задачу по информатике на Паскале. В кругу стоят n-ое количество
ребят, которые считаются считалочкой. Каждый 3 человек выбывает. Кто отсался. Пример Водиться: 11 1 2 3 4 5 6 7 8 9 10 11 выводиться: 7 Что неправильно в коде? Var a,b,c,x,y,k,n,i,j:integer; m:array[1..1000] of integer; Begin Readln(n); For i:=1 to n do m[i]:=i; For i:=1 to n do Write(m[i],' '); writeln; i:=1; c:=0; While i<=n do begin c:=c+1; If c=3 then begin For j:=i to n do m[j]:=m[j+1]; c:=0; n:=n-1; If (i=n) and (n>1) then i:=1; end else If (i=n) and (i>1) then i:=1 else i:=i+1; end; writeln(m[1]); end.

Ответы на вопрос

конкретно в каких стейтментах была ошибка , я не смог разобраться , но фактически у тебя
1.был не правильный вывод (m[1])
2.неправильная итерация по циклу с переменной 'с'
крч легче было просто переделать
var
c, n, i, j: integer;
m: array[1..1000] of integer;
begin
Readln(n);
for i := 1 to n do
begin
m[i] := i;
Write(m[i], ' ');
end;
writeln;
while n >= 1 do
begin
if c+2 < n then c := c + 3 else c := n - c + 3;
for i:=c to n do m[c]:=m[c+1];
n := n - 1;
end;
writeln(m[c]);
end.



Привет! В коде, который вы предоставили, есть несколько ошибок:
В строке "While i<=n do begin", символ "<" должен быть заменен на символ "<=".
При удалении элемента из массива, вы должны уменьшить индекс, чтобы не пропустить следующий элемент. То есть, вместо "For j:=i to n do m[j]:=m[j+1];" должно быть "For j:=i to n-1 do m[j]:=m[j+1];".
Вы выводите элемент с индексом 1 в массиве m, но это не правильно. После того, как вы удалили всех, кроме одного человека, оставшийся человек будет находиться в ячейке с индексом n, а не 1.
Исправленный код будет выглядеть так:
pascalVar a, b, c, x, y, k, n, i, j: integer; m: array[1..1000] of integer; Begin Readln(n); For i := 1 to n do m[i] := i; For i := 1 to n do Write(m[i],' '); writeln; i := 1; c := 0; While n > 1 do begin c := c + 1; If c = 3 then begin For j := i to n-1 do m[j] := m[j+1]; c := 0; n := n - 1; If (i = n) and (n > 1) then i := 1; end else If (i = n) and (i > 1) then i := 1 else i := i + 1; end; writeln(m[1]); end.
Теперь код должен работать правильно и вывести правильный результат для данной задачи.


Похожие вопросы
Топ вопросов за вчера в категории Информатика









Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili