Предмет: Информатика,
автор: xolluej93
Ввести одномерный массив 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.
Интересные вопросы
Предмет: Русский язык,
автор: babaeva3
Предмет: Русский язык,
автор: RomonMordovia9scholl
Предмет: Английский язык,
автор: Romzagal
Предмет: Математика,
автор: paramoga200498