Получить сумму всех элементов, следующих за первым заданным - 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.

Объяснение кода листинга программы

  1. Объявление переменных:
    • n, q, i, j, sum, cnt, flg, tmp - целочисленные переменные для хранения значений.
    • a, b - массивы целых чисел с размерностью 1000.
  2. Инициализация переменных:
    • flg := 0 - инициализация переменной flg значением 0.
    • cnt := 0 - инициализация переменной cnt значением 0.
  3. Ввод значений:
    • 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.
  4. Вывод результатов:
    • writeln('Ответ: ', cnt * (1 - flg) + sum * flg); - выводится результат вычислений.
  5. Сортировка массива:
    • Цикл для сортировки массива 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;.
  6. Вывод отсортированного массива b:
    • write('Массив b: '); - выводится приглашение для вывода массива b.
    • Цикл вывода массива b: for i := 1 to n do write(b[i], ' '); - каждый элемент массива b выводится на экран.
  7. Конец программы. Программа сначала запрашивает у пользователя значения n и q, затем заполняет массив a. Далее производятся вычисления на основе введенного массива, выводится результат, затем осуществляется сортировка массива b и вывод отсортированного массива.

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы