Из вычисленного массива R удалить все положительные элементы, расположенные до последнего...

0 голосов
54 просмотров

Из вычисленного массива R удалить все положительные элементы, расположенные до последнего отрицательного элемента Программа:type mas = array [1..100] of real;var x, h, a: real; i, n, j, k, l: integer; r: mas;begin repeat writeln ('Введите 1<=n<=100'); readln (n); if (n<1) or (n>100) then writeln ('Некорректный ввод'); until (n>=1) and (n<=100); writeln ('Введите h и a'); readln (h, a); writeln ('Введите х'); readln (x); for i:=1 to n do begin r[i]:=6*cos(a*x+i*h); end; write('Массив: '); for i:=1 to n do writeln(r[i]); {Найденный массив} j:=0; k:=0; for i:=1 to n do if r[i]<0 then k:=i; for i:=1 to n do if (r[i]>0) and (i<k) then begin (28 строка) for i:=k to n do begin j:=j+1; r[j]:=r[i]; end; n:=j;end;writeln('Новый массив');for i:=1 to n do writeln (r[j]);end. Ошибка: Нельзя изменять значение переменной цикла внутри этого цикла (строка 28) Я понимаю суть ошибки, но не знаю, чем заменить "i" для нужного мне результата


Информатика (41 баллов) | 54 просмотров
0

что значит эта строка кода if (r[i]>0) and (i for i:=k to n do begin <=28

0

ошибка при копировании, исправила

0

вместо двух циклов for используйте два цикла while, тогда сможете менять счетчик индексов внутри циклов, чуть позже напишу мое решение

Дан 1 ответ
0 голосов

надеюсь разберетесь что тут к чему, этот кусок кода нужно вставить после строки for i := 1 to n do writeln(r[i]); {Найденный массив}, а после этого вывести измененный массив, сами допишите. Если что-то не понятно смотрите текстовый файл во вложении.


image
(2.5k баллов)
0

если у вас будут ошибки на таких операциях i+=1, n-=1 и так далее измените их на i:=i+1, n:=n-1

0

Спасибо вам большое за помощь <3

0

на здоровье