Столкнулся с такой проблемой, код я переписал, но у меня тут возник вопрос, а как быть дальше? Вот сообственно сам код на паскале и С.
Ругается на переменную, якобы нельзя изменять переменную счетчик внутри цикла.
На Паскале:
program lr4_1__v46;
var a: array[1..100] of integer;
var i,j,n,r,lk,k,x,max:integer;
begin
writeln('Введите размер массива n = ');
readln(n);
max:=a[1];
writeln('Введите элементы массива');
for i:=1 to n do begin
writeln('A[',i,']: '); read(a[i]);
max:=(a[i]);
if a[i]>max then max:=a[i];
end;
for i:=1 to n do
if a[i]>max then max:=a[i];
r:=0;
for i:=1 to n do begin
if a[i]<0 then begin
r:=r+1;
lk:=j;
if r >= 3 then begin
j:=lk-2;
while (i<=lk) do begin
a[j]:=max;
r:=0;
j:=j-1;
end;
end;
end;
if a[i]>0 then r:=0;
end;
i:=j;
writeln;
for i:=1 to n do writeln('A[',i,']: ',a[i]);
end.
На С:
#include <stdio.h>
int main(){
int i,n, r, lk, k, x;
printf("Введите размер массива n= ");
scanf("%d",&n);
int a[n];
int max=a[0];
for (i=0; i<n; i++)
{
printf("A[%d]:",i);
scanf("%d",&a[i]);
max=a[i];
if(a[i]>max){max=a[i];}
}
for (i=0; i<n; i++)
{
if(a[i]>max){max=a[i];}
}
r=0;
for (i=0; i<n; i++){
if (a[i]<0){
r=r+1;
lk=i;
if(r>=3){
for(i=lk-2; i<=lk; i++)
a[i]=max; r=0;
i=i-1;}
}
if (a[i]>0){r=0;}
}
printf("\n");
for (i=0; i<n; i++)
printf("A[%d]:%d\n",i,a[i]);
printf("Макс: %d\n", max);}