Найти сумму элементов между минимальным и максимальным элементами массива
Авторgospodaretsva.comПросмотров23.1к.Обновлено
В одномерном массиве найти сумму элементов, находящихся между минимальным и максимальным элементами. Сами минимальный и максимальный элементы в сумму не включать.
Сначала надо найти минимальный и максимальный элементы массива. Это можно сделать в цикле заполнения массива. Причем лучше запоминать в переменных не сами значения элементов, а их индексы.
Поскольку неизвестно, какой из элементов (минимальный или максимальный) встречается в массиве раньше, то неизвестно, как в последующем делать перебор участка массива: от начала этого участка к его концу или от конца к началу. Данную проблему можно решить путем обмена значений переменных, если, например, переменная, содержащая индекс минимума, окажется больше содержащей индекс максимума.
До подсчета суммы элементов, находящихся между минимумом и максимумом, следует переменной (например, sum) присвоить 0. Далее перебираем в цикле for массив от следующего за минимумом элемента до элемента предшествующего максимуму. Для этого к первой переменной прибавляем 1, а из второй вычитаем 1. В теле цикла к значению sum добавляем значение текущего элемента массива.
Примечание. Если минимумов или максимумов оказывается несколько, то программа находит сумму только между первыми из них.
Pascal
const
N = 10;
var
arr: array[1..N] of integer;
i, min, max: byte;
sum: integer;
begin
randomize;
for i := 1 to N do begin
arr[i] := random(50);
write (arr[i]:3);
end;
writeln;
min := 1;
max := 1;
for i := 2 to N do begin
if arr[i] < arr[min] then min := i else
if arr[i] > arr[max] then max := i;
end;
writeln(arr[min],' ',arr[max]);
if min > max then begin
i := min;
min := max;
max := i;
end;
sum := 0;
for i:=min+1 to max-1 do begin
sum := sum + arr[i]
end;
writeln(sum);
end.
25 20 20 20 24 48 40 24 46 16
16 48
110
Язык Си
#include
#define N 10
main() {
int a[N], i, min, max, sum;
srand(time(NULL));
for (i=0; i< N; i++) {
a[i] = rand()%50;
printf("%3d", a[i]);
}
printf("\n");
min = 0;
max = 0;
for (i=1; i < N; i++) {
if (a[i] < a[min]) min = i;
else if (a[i] > a[max]) max = i;
}
printf("%3d, %3d\n", a[min], a[max]);
if (min > max) {
i = min;
min = max;
max = i;
}
sum = 0;
for (i=min+1; i< max; i++)
sum += a[i];
printf("%4d\n", sum);
}
39 21 12 14 24 37 33 46 38 22
12, 46
108
Python
from random import random
N = 10
a = [0]*N
for i in range(N):
a[i] = int(random()*50)
print('%3d' % a[i], end='')
print()
min_id = 0
max_id = 0
for i in range(1,N):
if a[i] < a[min_id]:
min_id = i
elif a[i] > a[max_id]:
max_id = i
print(a[min_id], a[max_id])
if min_id > max_id:
min_id, max_id = max_id, min_id
summa = 0
for i in range(min_id+1, max_id):
summa += a[i]
print(summa)
10 5 8 14 16 42 18 33 2 32
2 42
51
Поиск индексов минимального и максимального элементов можно было выполнить так:
min_id = a.index(min(a)) max_id = a.index(max(a)) Здесь встроенные функции min() и max() языка Python находят соответственно минимальный и максимальный элементы списка. А метод списка index() определяет индекс (номер) переданного в качестве аргумента элемента.
КуМир
алг сумма между
нач
цел N = 10
цел таб arr[1:N]
цел i, mini, maxi, sum
нц для i от 1 до N
arr[i] := irand(0,50)
вывод arr[i]:3
кц
вывод нс
mini := 1
maxi := 1
нц для i от 2 до N
если arr[i] < arr[mini] то
mini := i
иначе
если arr[i] > arr[maxi] то
maxi := i
все
все
кц
вывод arr[mini]:3, arr[maxi]:3, нс
если mini > maxi то
i := mini
mini := maxi
maxi := i
все
sum := 0
нц для i от mini+1 до maxi-1
sum := sum + arr[i]
кц
вывод sum, нс
кон
26 6 35 35 36 25 39 22 5 1
1 39
27
Basic-256
N = 10
dim arr(N)
for i=0 to N-1
arr[i] = int(rand()*50)
print arr[i] + " ";
next i
print
min = 0
max = 0
for i=1 to N-1
if arr[i] < arr[min] then min = i
if arr[i] > arr[max] then max = i
next i
print arr[min] + " " + arr[max]
if min > max then
i = min
min = max
max = i
endif
sum = 0
for i=min+1 to max-1
sum = sum + arr[i]
next i
print sum
28 16 16 33 32 17 1 17 3 17
1 33
49
Подписаться
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Pascal
const N = 10; var arr: array[1..N] of integer; i, min, max: byte; sum: integer; begin randomize; for i := 1 to N do begin arr[i] := random(50); write (arr[i]:3); end; writeln;
min := 1; max := 1; for i := 2 to N do begin if arr[i] < arr[min] then min := i else if arr[i] > arr[max] then max := i; end; writeln(arr[min],' ',arr[max]);
if min > max then begin i := min; min := max; max := i; end;
sum := 0; for i:=min+1 to max-1 do begin sum := sum + arr[i] end; writeln(sum); end.
25 20 20 20 24 48 40 24 46 16 16 48 110
Язык Си
#include #define N 10
main() { int a[N], i, min, max, sum; srand(time(NULL)); for (i=0; i< N; i++) { a[i] = rand()%50; printf("%3d", a[i]); } printf("\n");
min = 0; max = 0; for (i=1; i < N; i++) { if (a[i] < a[min]) min = i; else if (a[i] > a[max]) max = i; } printf("%3d, %3d\n", a[min], a[max]);
if (min > max) { i = min; min = max; max = i; }
sum = 0; for (i=min+1; i< max; i++) sum += a[i]; printf("%4d\n", sum); }
39 21 12 14 24 37 33 46 38 22 12, 46 108
Python
from random import random
N = 10 a = [0]*N for i in range(N): a[i] = int(random()*50) print('%3d' % a[i], end='') print()
min_id = 0 max_id = 0 for i in range(1,N): if a[i] < a[min_id]: min_id = i elif a[i] > a[max_id]: max_id = i print(a[min_id], a[max_id])
if min_id > max_id: min_id, max_id = max_id, min_id
summa = 0 for i in range(min_id+1, max_id): summa += a[i] print(summa)
10 5 8 14 16 42 18 33 2 32 2 42 51
Поиск индексов минимального и максимального элементов можно было выполнить так:
min_id = a.index(min(a)) max_id = a.index(max(a)) Здесь встроенные функции min() и max() языка Python находят соответственно минимальный и максимальный элементы списка. А метод списка index() определяет индекс (номер) переданного в качестве аргумента элемента.
КуМир
алг сумма между нач цел N = 10 цел таб arr[1:N] цел i, mini, maxi, sum нц для i от 1 до N arr[i] := irand(0,50) вывод arr[i]:3 кц вывод нс
mini := 1 maxi := 1 нц для i от 2 до N если arr[i] < arr[mini] то mini := i иначе если arr[i] > arr[maxi] то maxi := i все все кц вывод arr[mini]:3, arr[maxi]:3, нс
если mini > maxi то i := mini mini := maxi maxi := i все
sum := 0 нц для i от mini+1 до maxi-1 sum := sum + arr[i] кц вывод sum, нс кон
26 6 35 35 36 25 39 22 5 1 1 39 27
Basic-256
N = 10 dim arr(N) for i=0 to N-1 arr[i] = int(rand()*50) print arr[i] + " "; next i print
min = 0 max = 0 for i=1 to N-1 if arr[i] < arr[min] then min = i if arr[i] > arr[max] then max = i next i print arr[min] + " " + arr[max]
if min > max then i = min min = max max = i endif
sum = 0 for i=min+1 to max-1 sum = sum + arr[i] next i print sum