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

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

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

Здравствуйте, дорогие друзья! Сразу к делу: задали разобрать массив, а точнее найти сумму всех положительных, максимальное и минимальное, а также произведение между максимальным и минимальным (не включительно!!). все бы хорошо, да вот проблема, при работе с отрицательными числами не находится максимальное число (выдает мне 0 ), то есть , если есть в массиве среди отрицательных хотя бы единица, то ее он мне и напишет , а если ТОЛЬКО отрицательные... ну вы поняли. А сам вопрос заключается в следующем: где эта ошибка в коде?
Листинг программы
  1. var
  2. a: array[1..100] of integer;
  3. n, i, sum, pr, max, min, maxI, minI: integer;
  4.  
  5. begin
  6. readln(n);
  7. sum := 0;
  8. max := a[1];
  9. min := a[1];
  10. pr := 1;
  11. maxI := 1;
  12. minI := 1;
  13. for i := 1 to n do
  14. read(a[i]);
  15. for i := 1 to n do
  16. write(a[i], ' ');
  17. writeln;
  18. for i := 1 to n do
  19. begin
  20. if a[i] > max then
  21. begin
  22. max := a[i];
  23. maxI := i;
  24. end;
  25. if a[i] > 0 then sum := sum + a[i];
  26. if a[i] < min then
  27. begin
  28. min := a[i];
  29. minI := i;
  30. end;
  31. end;
  32. if minI > maxI then
  33. begin
  34. for i := maxI + 1 to minI - 1 do
  35. pr := pr * a[i];
  36. end
  37. else
  38. begin
  39. for i := minI + 1 to maxI - 1 do
  40. pr := pr * a[i];
  41. end;
  42.  
  43. write(sum, ' ', max, ' ', min, ' ', pr, ' ', maxI);
  44.  
  45. end.

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

textual
Листинг программы
  1. var
  2.   a: array[1..100] of integer;
  3.   n, i, sum, pr, max, min, maxI, minI: integer;
  4.  
  5. begin
  6.   readln(n);
  7.   for i := 1 to n do
  8.     read(a[i]);
  9.   for i := 1 to n do
  10.     write(a[i], '  ');
  11.   sum := 0;
  12.   max := a[1]; min := a[1]; { <== Инициализацию начального минимума
  13.   и максимума нужно делать после ввода массива, иначе в PascalABC.Net
  14.   эти значения по умолчанию равны 0, поэтому при вводе отрицательных
  15.   чисел этот нуль и будет максимумом. }
  16.   pr := 1;
  17.   maxI := 1;
  18.   minI := 1;
  19.   writeln;
  20.   for i := 1 to n do
  21.   begin
  22.     if a[i] > max then
  23.     begin
  24.       max := a[i];
  25.       maxI := i;
  26.     end;
  27.     if a[i] > 0 then sum := sum + a[i];
  28.    
  29.     if a[i] < min then
  30.     begin
  31.       min := a[i];
  32.       minI := i;
  33.     end;
  34.   end;
  35.   if minI > maxI then
  36.   begin
  37.     for i := maxI + 1 to minI - 1 do
  38.       pr := pr * a[i];
  39.   end
  40.    else
  41.   begin
  42.     for i := minI + 1 to maxI - 1 do
  43.       pr := pr * a[i];
  44.   end;
  45.   writeln(sum, '  ', max, '  ', min, '  ', pr, '  ', maxI);
  46.   {writeln('Сумма положительных = ', sum);
  47.   writeln('Максимальное = ', max);
  48.   writeln('Минимальное = ', min);
  49.   writeln('Произведение между максимальным и минимальным (не включительно!!) = ', pr);}
  50. 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

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

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

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