Const N = 10; var a, S1, S2: Integer; i, Q1, Q2: Byte; begin S1 := 0; Q1 := 0; S2 := 0; Q2 := 0; writeln('Введите ', N, ' чисел:'); for i := 1 to N do begin read(a); if a < 0 then begin S1 := S1 + a; inc(Q1) end; if a > 0 then begin S2 := S2 + a; inc(Q2) end; end; writeln; if Q1 > 0 then begin writeln('Сумма отрицательных чисел: ', S1); writeln('Количество отрицательных: ', Q1) end else writeln('Отрицательных нет'); if Q2 > 0 then begin writeln('Сумма положительных чисел: ', S2); writeln('Количество положительных: ', Q2) end else writeln('Положительных нет') end.
Подумайте чуть, ведь все просто. Есть массив, у него гдето есть середина, или точка симметрии. Она находится как (n div 2). Если массив четной длины, то он делится на 2 равные части, если нечетный - в середине остается один элемент, который ни с кем менять не надо. Сейчас смотрим элементы первой половины for i:=1 to n div 2 запоминаем их x:=a[i]; присваиваем им значения симметричных им элементов с конца a[i]:=a[n-i+1]; например при n=10 a[1]:=a[10-1+1]; А элементам в конце присваиваем значения запомненных первых элементов a[n-i+1]:=x; Все, поменяли.
var a, S1, S2: Integer;
i, Q1, Q2: Byte;
begin
S1 := 0; Q1 := 0;
S2 := 0; Q2 := 0;
writeln('Введите ', N, ' чисел:');
for i := 1 to N do
begin
read(a);
if a < 0 then
begin
S1 := S1 + a;
inc(Q1)
end;
if a > 0 then
begin
S2 := S2 + a;
inc(Q2)
end;
end;
writeln;
if Q1 > 0 then
begin
writeln('Сумма отрицательных чисел: ', S1);
writeln('Количество отрицательных: ', Q1)
end
else
writeln('Отрицательных нет');
if Q2 > 0 then
begin
writeln('Сумма положительных чисел: ', S2);
writeln('Количество положительных: ', Q2)
end
else
writeln('Положительных нет')
end.
Сейчас смотрим элементы первой половины
for i:=1 to n div 2
запоминаем их x:=a[i];
присваиваем им значения симметричных им элементов с конца
a[i]:=a[n-i+1]; например при n=10 a[1]:=a[10-1+1];
А элементам в конце присваиваем значения запомненных первых элементов
a[n-i+1]:=x;
Все, поменяли.