Получить сумму всех элементов, следующих за первым заданным - Pascal

Узнай цену своей работы

Формулировка задачи:

Даны натуральное число n и целые числа q a1...an где n<=1000.Если в последовательности а1...аn есть хотя бы один элемент, равный q то получить сумму всех элементов, следующих за первым таким элементом, в противном случае ответом должно служить количество отрицательных элементов.Кроме того, сформировать последовательность b1...bn из отсортированных в порядке убывания элементов исходной последовательности а1...аn.

Решение задачи: «Получить сумму всех элементов, следующих за первым заданным»

textual
Листинг программы
  1. var
  2.   n, q, i, j, sum, cnt, flg, tmp: integer;
  3.   a, b: array[1..1000] of integer;
  4. begin
  5.   flg := 0;
  6.   cnt := 0;
  7.   write('Введите n: '); read(n);
  8.   write('Введите q: '); read(q);
  9.   write('Введите массив a: ');
  10.   for i := 1 to n do begin
  11.     read(a[i]);
  12.     b[i] := a[i];
  13.     sum := sum + a[i] * flg;
  14.     if a[i] = q then flg := 1;
  15.     if a[i] < 0 then inc(cnt);
  16.   end;
  17.   writeln('Ответ: ', cnt * (1 - flg) + sum * flg);
  18.   for i := 1 to n - 1 do
  19.     for j := i + 1 to n do
  20.       if b[i] < b[j] then begin
  21.         tmp := b[i];
  22.         b[i] := b[j];
  23.         b[j] := tmp;
  24.       end;
  25.   write('Массив b: ');
  26.   for i := 1 to n do write(b[i], ' ');
  27. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы