Найти сумму положительных, максимальное и минимальное, произведение между максимальным и минимальным - 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.
Объяснение кода листинга программы
- Объявлены переменные:
- a: массив из 100 целых чисел;
- n, i, sum, pr, max, min, maxI, minI: целые числа.
- Считывается количество чисел в массиве (n).
- Заполняется массив a.
- Выводятся все числа массива.
- Инициализируются начальные значения суммы, максимального и минимального числа, а также их индексов.
- Вычисляется произведение между максимальным и минимальным числом.
- Цикл по всем элементам массива.
- Если текущее число больше максимального, то обновляются значения максимального числа и его индекса.
- Если текущее число положительное, то прибавляется к сумме.
- Если текущее число меньше минимального, то обновляются значения минимального числа и его индекса.
- Если индекс минимального числа больше индекса максимального числа, то ищется произведение между максимальным и минимальным числом, начиная с индекса, следующего за индексом максимального числа и заканчивая индексом, предшествующим индексу минимального числа.
- Если индекс минимального числа меньше или равен индексу максимального числа, то ищется произведение между максимальным и минимальным числом, начиная с индекса, следующего за индексом минимального числа и заканчивая индексом, предшествующим индексу максимального числа.
- Выводятся сумма, максимальное число, минимальное число и произведение между максимальным и минимальным числом.
- Выводится информация о сумме положительных чисел, максимальном и минимальном числе и произведении между максимальным и минимальным числом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д