Найти сумму положительных, максимальное и минимальное, произведение между максимальным и минимальным - 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.
- Выводятся все числа массива.
- Инициализируются начальные значения суммы, максимального и минимального числа, а также их индексов.
- Вычисляется произведение между максимальным и минимальным числом.
- Цикл по всем элементам массива.
- Если текущее число больше максимального, то обновляются значения максимального числа и его индекса.
- Если текущее число положительное, то прибавляется к сумме.
- Если текущее число меньше минимального, то обновляются значения минимального числа и его индекса.
- Если индекс минимального числа больше индекса максимального числа, то ищется произведение между максимальным и минимальным числом, начиная с индекса, следующего за индексом максимального числа и заканчивая индексом, предшествующим индексу минимального числа.
- Если индекс минимального числа меньше или равен индексу максимального числа, то ищется произведение между максимальным и минимальным числом, начиная с индекса, следующего за индексом минимального числа и заканчивая индексом, предшествующим индексу максимального числа.
- Выводятся сумма, максимальное число, минимальное число и произведение между максимальным и минимальным числом.
- Выводится информация о сумме положительных чисел, максимальном и минимальном числе и произведении между максимальным и минимальным числом.