Поменять местами первый и последний элементы вектора по заданному условию - Turbo Pascal
Формулировка задачи:
Массивы. Можно более подробно?
Дан вектор A(2n). Если сумма S1=a1+a2+...+an равна сумме S2=an+1+ an+2+...+ a2n, то поменять местами первый и последний элементы вектора.
Решение задачи: «Поменять местами первый и последний элементы вектора по заданному условию»
textual
Листинг программы
s := 0;
for i := 1 to n do s := s + a[i] - a[i + n]; //<===
if s = 0
then begin
t := a[1];
a[1] := a[2 * n];
a[2 * n] := t;
writeln('Result:');
for i := 1 to 2 * n do write(a[i]:4)
end
else write('No swap.');
Объяснение кода листинга программы
- Переменная
sинициализируется значением 0. - Затем происходит цикл
for, который начинается с индекса 1 и продолжается доn(количество элементов в векторе). - Внутри цикла выполняется вычисление
s := s + a[i] - a[i + n]. Это выравнивает элементы вектора, перемещая первый элемент в конец и последний элемент в начало. - После выполнения цикла проверяется значение переменной
s. Если оно равно 0, то происходит следующая часть кода. - В этом случае присваиваются значения
t := a[1]иa[1] := a[2 * n]. Первый элемент вектораa[1]присваивается переменнойt, а второй элемент вектораa[2 * n]присваивается самому себе (первому элементу вектора). - Затем выводится результат. С помощью цикла
forвыводятся значения каждого элемента вектораa[i]на экран. - Если значение переменной
sне равно 0, то выводится сообщениеNo swap.