Найти сумму положительных, максимальное и минимальное, произведение между максимальным и минимальным - PascalABC.NET

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

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

Здравствуйте, дорогие друзья! Сразу к делу: задали разобрать массив, а точнее найти сумму всех положительных, максимальное и минимальное, а также произведение между максимальным и минимальным (не включительно!!). все бы хорошо, да вот проблема, при работе с отрицательными числами не находится максимальное число (выдает мне 0 ), то есть , если есть в массиве среди отрицательных хотя бы единица, то ее он мне и напишет , а если ТОЛЬКО отрицательные... ну вы поняли. А сам вопрос заключается в следующем: где эта ошибка в коде?

Решение задачи: «Найти сумму положительных, максимальное и минимальное, произведение между максимальным и минимальным»

textual
Листинг программы
var
  a: array[1..100] of integer;
  n, i, sum, pr, max, min, maxI, minI: integer;
 
begin
  readln(n);
  for i := 1 to n do
    read(a[i]);
  for i := 1 to n do 
    write(a[i], '  ');
  sum := 0;
  max := a[1]; min := a[1]; { <== Инициализацию начального минимума 
  и максимума нужно делать после ввода массива, иначе в PascalABC.Net
  эти значения по умолчанию равны 0, поэтому при вводе отрицательных
  чисел этот нуль и будет максимумом. }
  pr := 1;
  maxI := 1;
  minI := 1;
  writeln;
  for i := 1 to n do
  begin
    if a[i] > max then
    begin
      max := a[i];
      maxI := i;
    end;
    if a[i] > 0 then sum := sum + a[i];
    
    if a[i] < min then
    begin
      min := a[i];
      minI := i;
    end;
  end;
  if minI > maxI then 
  begin
    for i := maxI + 1 to minI - 1 do
      pr := pr * a[i];
  end
   else
  begin
    for i := minI + 1 to maxI - 1 do
      pr := pr * a[i];
  end;
  writeln(sum, '  ', max, '  ', min, '  ', pr, '  ', maxI);
  {writeln('Сумма положительных = ', sum);
  writeln('Максимальное = ', max);
  writeln('Минимальное = ', min);
  writeln('Произведение между максимальным и минимальным (не включительно!!) = ', pr);}
end.

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

  1. Объявлены переменные:
    • a: массив из 100 целых чисел;
    • n, i, sum, pr, max, min, maxI, minI: целые числа.
  2. Считывается количество чисел в массиве (n).
  3. Заполняется массив a.
  4. Выводятся все числа массива.
  5. Инициализируются начальные значения суммы, максимального и минимального числа, а также их индексов.
  6. Вычисляется произведение между максимальным и минимальным числом.
  7. Цикл по всем элементам массива.
  8. Если текущее число больше максимального, то обновляются значения максимального числа и его индекса.
  9. Если текущее число положительное, то прибавляется к сумме.
  10. Если текущее число меньше минимального, то обновляются значения минимального числа и его индекса.
  11. Если индекс минимального числа больше индекса максимального числа, то ищется произведение между максимальным и минимальным числом, начиная с индекса, следующего за индексом максимального числа и заканчивая индексом, предшествующим индексу минимального числа.
  12. Если индекс минимального числа меньше или равен индексу максимального числа, то ищется произведение между максимальным и минимальным числом, начиная с индекса, следующего за индексом минимального числа и заканчивая индексом, предшествующим индексу максимального числа.
  13. Выводятся сумма, максимальное число, минимальное число и произведение между максимальным и минимальным числом.
  14. Выводится информация о сумме положительных чисел, максимальном и минимальном числе и произведении между максимальным и минимальным числом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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