Дан массив. Найти удвоенную сумму положительных элементов - Turbo Pascal
Формулировка задачи:
Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти:
− удвоенную сумму положительных элементов;
− и вывести индексы тех элементов, значения которых больше значения предыду-щего элемента (начиная со второго).
− определить, есть ли две пары соседних элементов с одинаковыми знаками.
− заменить минимальный мо модулю положительный элемент нулем.
− заменить элементы с k1-го по k2-й на обратные
Решение задачи: «Дан массив. Найти удвоенную сумму положительных элементов»
textual
Листинг программы
uses crt; var a: array[1..10] of integer; s_pol,i,k1,k2,min,i_min,ko: integer; bool: boolean; begin write('Введите k1: '); repeat read(k1); until k1 in [1..10]; write('Введите k2: '); repeat read(k2); until k2 in [1..10]; for i:=1 to 10 do begin write('a[',i,'] = '); read(a[i]); if a[i]>0 then min:=a[i]; if a[i]>0 then inc(s_pol, a[i]); end; writeln('Press ENTER...'); readln; clrscr; writeln('k1 = ',k1); writeln('k2 = ',k2); write('Исходный массив: '); for i:=1 to 10 do begin write(a[i],' '); end; writeln; writeln('Удвоенная сумма положительных элементов: ',2*s_pol); write('Индексы элементов, которые больше предыдущих: '); for i:=2 to 10 do begin if a[i]>a[i-1] then write(i,' '); end; writeln; writeln; ko:=0; for i:=2 to 10 do begin if ((a[i]>0) and (a[i-1]>0)) or ((a[i]<0) and (a[i-1]<0))then inc(ko); end; if ko>2 then writeln('Есть две пары соседних элементов с одинаковыми знаками') else writeln('Нет двух пар соседних элементов с одинаковыми знаками'); if min>0 then begin for i:=1 to 10 do begin if a[i]>0 then begin if a[i]<=min then begin min:=a[i]; i_min:=i; end; end; end; writeln; a[i_min]:=0; end else writeln('Все элементы отрицательные!'); for i:=k1 to k2 do begin a[i]:=a[i]*(-1); end; write('Измененный массив: '); for i:=1 to 10 do begin write(a[i],' '); end; end.
Объяснение кода листинга программы
- Создаётся переменная
a
типаarray[1..10] of integer
, что означает создание массива из 10 целых чисел. - Создаются три переменные
s_pol
,i
,k1
,k2
,min
,i_min
иko
для хранения суммы положительных элементов, текущего индекса, двух индексов, минимального значения и индекса предыдущего элемента. - Запускается цикл
for
, который повторяется до тех пор, покаk1
иk2
не будут введены пользователем. - Внутри цикла
for
происходит чтение значенийk1
иk2
с помощью функцииread()
. - Далее начинается цикл
for
, который выполняется для каждого элемента массиваa
. - Внутри этого цикла происходит чтение значения текущего элемента массива с помощью функции
read()
. - Если значение текущего элемента больше нуля, то оно сравнивается с минимальным значением, и если оно больше, то обновляется минимальное значение и индекс предыдущего элемента.
- Если значение текущего элемента больше нуля, то его значение увеличивается на сумму положительных элементов.
- После завершения внутреннего цикла
for
выводится сообщение с введенными значениямиk1
иk2
. - Выводится исходный массив
a
. - Вычисляется удвоенная сумма положительных элементов и выводится сообщение с этим значением.
- Выводится сообщение с индексами элементов, которые больше предыдущих.
- Создается переменная
ko
для отслеживания количества пар соседних элементов с одинаковыми знаками. - Если есть две пары соседних элементов с одинаковыми знаками, то значение
ko
увеличивается. - Если значение
ko
больше двух, выводится сообщение о наличии двух пар соседних элементов с одинаковыми знаками. - Если минимальное значение в массиве больше нуля, то для всех элементов массива, которые больше или равны минимальному значению, обновляется значение.
- Для элементов массива, которые находятся между
k1
иk2
, значение меняется на противоположное. - Выводится измененный массив
a
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д