Получить сумму всех элементов, следующих за первым заданным - Pascal
Формулировка задачи:
Даны натуральное число n и целые числа q a1...an где n<=1000.Если в последовательности а1...аn есть хотя бы один элемент, равный q то получить сумму всех элементов, следующих за первым таким элементом, в противном случае ответом должно служить количество отрицательных элементов.Кроме того, сформировать последовательность b1...bn из отсортированных в порядке убывания элементов исходной последовательности а1...аn.
Решение задачи: «Получить сумму всех элементов, следующих за первым заданным»
textual
Листинг программы
var n, q, i, j, sum, cnt, flg, tmp: integer; a, b: array[1..1000] of integer; begin flg := 0; cnt := 0; write('Введите n: '); read(n); write('Введите q: '); read(q); write('Введите массив a: '); for i := 1 to n do begin read(a[i]); b[i] := a[i]; sum := sum + a[i] * flg; if a[i] = q then flg := 1; if a[i] < 0 then inc(cnt); end; writeln('Ответ: ', cnt * (1 - flg) + sum * flg); for i := 1 to n - 1 do for j := i + 1 to n do if b[i] < b[j] then begin tmp := b[i]; b[i] := b[j]; b[j] := tmp; end; write('Массив b: '); for i := 1 to n do write(b[i], ' '); end.
Объяснение кода листинга программы
- Объявление переменных:
n, q, i, j, sum, cnt, flg, tmp
- целочисленные переменные для хранения значений.a, b
- массивы целых чисел с размерностью 1000.
- Инициализация переменных:
flg := 0
- инициализация переменнойflg
значением 0.cnt := 0
- инициализация переменнойcnt
значением 0.
- Ввод значений:
write('Введите n: '); read(n);
- пользователь вводит значение переменнойn
.write('Введите q: '); read(q);
- пользователь вводит значение переменнойq
.write('Введите массив a: ');
- выводится приглашение для ввода массиваa
.- Цикл ввода массива
a
:read(a[i]);
- вводится элемент массиваa
с индексомi
.b[i] := a[i];
- элементb[i]
принимает значение элементаa[i]
.sum := sum + a[i] * flg;
- вычисление суммы элементов массиваa
.if a[i] = q then flg := 1;
- если текущий элемент равенq
, устанавливается флагflg
в 1.if a[i] < 0 then inc(cnt);
- если текущий элемент отрицателен, увеличивается счетчикcnt
.
- Вывод результатов:
writeln('Ответ: ', cnt * (1 - flg) + sum * flg);
- выводится результат вычислений.
- Сортировка массива:
- Цикл для сортировки массива
b
в порядке убывания:for i := 1 to n - 1 do
- цикл по элементам массиваb
.for j := i + 1 to n do
- вложенный цикл.if b[i] < b[j] then begin
- если текущий элементb[i]
меньше элементаb[j]
, то начинается блок сортировки.- Обмен значений элементов
b[i]
иb[j]
:tmp := b[i]; b[i] := b[j]; b[j] := tmp;
.
- Цикл для сортировки массива
- Вывод отсортированного массива
b
:write('Массив b: ');
- выводится приглашение для вывода массиваb
.- Цикл вывода массива
b
:for i := 1 to n do write(b[i], ' ');
- каждый элемент массиваb
выводится на экран.
- Конец программы.
Программа сначала запрашивает у пользователя значения
n
иq
, затем заполняет массивa
. Далее производятся вычисления на основе введенного массива, выводится результат, затем осуществляется сортировка массиваb
и вывод отсортированного массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д