Предмет: Информатика, автор: carrollnastya

Из вычисленного массива 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" для нужного мне результата


iolandavalerypad353: что значит эта строка кода if (r[i]>0) and (i for i:=k to n do begin <=28
carrollnastya: ошибка при копировании, исправила
iolandavalerypad353: вместо двух циклов for используйте два цикла while, тогда сможете менять счетчик индексов внутри циклов, чуть позже напишу мое решение

Ответы

Автор ответа: iolandavalerypad353
1

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

Приложения:

iolandavalerypad353: если у вас будут ошибки на таких операциях i+=1, n-=1 и так далее измените их на i:=i+1, n:=n-1
carrollnastya: Спасибо вам большое за помощь <3
iolandavalerypad353: на здоровье
Похожие вопросы