Ввести одномерный массив A , вывести его. Проверить, имеется ли в
массиве, хотя бы одна пара соседних чисел, являющихся
противоположными. Если имеется, то поменять местами первую
встретившуюся такую пару.

Помогите решить, мучаюсь уже часа 3, понимаю, что мне нужно получить след элемент массива, реверснуть его, сравнить с предыдущим, поменять их местами и реверснуть обратно. Я прокляну этот паскаль после того как сдам эту лабу

Ответы

Ответ дал: exxr
0

Ответ:

program qwe;

var

a:array of integer;

n,k,i:integer;

begin

writeln('Введите размерность массива: ');

readln(n);

setlength(a,n);

randomize;

k:=0;

for i:=0 to n-1 do

begin

a:=random(5)-3;

write(a,' ');

end;

writeln;

for i:=0 to n-2 do

if (a+a[i+1]=0) and (a<>0) and (a[i+1]<>0) then k:=k+1;

if (k=0) then writeln ('В массиве нет ни одной пары соседних взаимно противоположных чисел')

else writeln('В массиве соседних пар взаимно противоположных чисел - ',k,' шт');

readln;

end.

Объяснение:


xolluej93: Бро, ты просто посчитал кол-во противоположных чисел, их в массиве нужно ещё поменять местами [15, 51, 21, 62] => [51, 15, 21, 62]
xolluej93: program ABC;
var A:array[1..4] of integer;
B:array[1..4] of integer;
i,k, z, z2, m:integer;
begin
k:=0;
z:=0;

writeLn('Вводим элементы массива A:');
for i:=1 to 4 do
begin
write('A[',i,']=');
readLn(A[i]);
B[i]:=A[i];
end;

for i:=1 to 4-1 do begin
if A[i] = B[i + 1].ToString.Inverse.ToInteger then begin
k:= i;
z:= A[i].ToString.Inverse.ToInteger;
z2:= B[i];
end;
end;

if k <> 0 then begin
A[k]:= z;
A[k+1]:= z2;
end;

write(A);

end.
xolluej93: Тем не менее, я разобрался с этой дичью, г**нокод конечно, тем не менее работает):
Вас заинтересует