СРОЧНО!!!!!!!!! Пмоготи решить задачу по информатике на Паскале. В кругу стоят 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
 
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			