Ввести одномерный массив A , вывести его. Проверить, имеется ли в
массиве, хотя бы одна пара соседних чисел, являющихся
противоположными. Если имеется, то поменять местами первую
встретившуюся такую пару.
Помогите решить, мучаюсь уже часа 3, понимаю, что мне нужно получить след элемент массива, реверснуть его, сравнить с предыдущим, поменять их местами и реверснуть обратно. Я прокляну этот паскаль после того как сдам эту лабу
Ответы
Ответ дал:
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]
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.
Вас заинтересует
1 год назад
1 год назад
1 год назад
1 год назад
7 лет назад
8 лет назад