Задача - Найти массив с максимальной суммой элементов - программирование на разных языках

Задача — Найти массив с максимальной суммой элементов — программирование на разных языках

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.

Задача — Найти массив с максимальной суммой элементов
— программирование на Pascal, Си, Кумир, Basic-256, Python

Сгенерировать десять массивов из случайных чисел. Вывести их и сумму их элементов на экран. Найти среди них один с максимальной суммой элементов. Указать какой он по счету, повторно вывести этот массив и сумму его элементов.

Заполнение массива и подсчет суммы его элементов оформить в виде отдельной функции.

Если сохранять все массивы нет необходимости, то тогда задача решается проще.

В основной ветке программы создается два массива. Один для хранения массива с максимальной суммой элементов, а второй — для хранения текущего массива.

В функцию передается ссылка на текущий массив. Там он заполняется, выводится на экран и вычисляется сумма его элементов, которую функция возвращает в основную ветку программы.

Если сумма элементов текущего массива оказывается больше, чем значение переменной, предназначенной для хранения максимальной суммы, то текущий массив присваивается переменной, предназначенной для хранения массива с максимальной суммой элементов. Кроме того в отдельной переменной запоминается номер этого массива. В конце программы массив, его номер по счету и сумма элементов выводятся на экран.

Pascal

const N = 15;
type arr = array[1..N] of integer;
var
arr_max, arr_new: arr;
sum_max, sum_new, i, id: integer;

function new_array(var a: arr): integer;
var k: byte;
begin
new_array := 0;
for k:=1 to N do begin
a[k] := random(50);
write(a[k]:4);
new_array := new_array + a[k];
end;
writeln(‘ — ‘, new_array);
end;

begin
randomize;
sum_max := 0;
id := 1;
for i:=1 to 10 do begin
sum_new := new_array(arr_new);
if sum_new > sum_max then begin
arr_max := arr_new;
sum_max := sum_new;
id := i;
end;
end;
writeln;
writeln(id, ‘-й массив с максимальной суммой элементов:’);
for i:=1 to N do
write(arr_max[i]:4);
writeln(‘ — ‘, sum_max);
end.    3  29  24   7  30  28  37  30   7   4  23  18  26  18  10 — 294
2  39   2  35  15  33  35  37  16   8  35  37   8  22  47 — 371
1  36  47  21  49  35  44  40  27  16  36  15  43  12  19 — 441
13   2   9  21   9  13  13  26  32  15  12  32  14  19   7 — 237
0  11   7  11  27  13  23   9  33  19  21   9  31   9   7 — 230
10   9  33  22   5  25   1  40  36  25  15  41  39   8  38 — 347
17  13  44  18  32  18  22  11  19  40  26  29  15   2   0 — 306
20  33  35  21   1   4   3  33   7  10   8  33  12  10   5 — 235
36  33  31  26  44  33  18  17  27  42  15  12  19   8  34 — 395
21  29  48  41  31  42  34   0  17  37  36  33  11  12  42 — 434

3-й массив с максимальной суммой элементов:
1  36  47  21  49  35  44  40  27  16  36  15  43  12  19 — 44

Язык Си

#include <stdio.h>
#define N 15
int array(int a[]);

main() {
int arr_new[N], arr_max[N], i, j, id, sum_max, sum_new;
srand(time(NULL));
id = 0;
sum_max = 0;
for (i=1; i<=10; i++) {
sum_new = array(arr_new);
if (sum_new > sum_max) {
sum_max = sum_new;
for (j=0; j<N; j++) arr_max[j] = arr_new[j];
id = i;
}
}
printf(«n%d-й массив с максимальной суммой элементов:n», id);
for (i=0; i<N; i++) printf(«%4d», arr_max[i]);
printf(» — %dn», sum_max);
}

int array(int a[]) {
int k, sum;
sum = 0;
for (k=0; k<N; k++) {
a[k] = rand()%50;
sum += a[k];
printf(«%4d», a[k]);
}
printf(» — %dn», sum);
return sum;
}

Нельзя напрямую присвоить один массив другому.

Python

from random import random

def array(a):
s = 0
for i in range(15):
a[i] = int(random()*50)
print(«%4d» % a[i], end=»)
s += a[i] print(» — %d» % s)
return s

arr_new = [0]*15
sum_max = 0
for i in range(10):
sum_new = array(arr_new)
if sum_new > sum_max:
sum_max = sum_new
index = i+1
arr_max = arr_new

print(«%d-й массив имеет максимальную сумму элементов:» % index)
print(arr_max, ‘ — ‘, sum_max)

КуМир

цел Н = 15
цел таб а[1:Н] алг
нач
цел сч, сч2, индекс, сумма, сумма_текущая
цел таб б[1:Н] сумма := 0
индекс := 1
нц для сч от 1 до 10
сумма_текущая := массив
если сумма < сумма_текущая то
сумма := сумма_текущая
индекс := сч
нц для сч2 от 1 до Н
б[сч2] := а[сч2] кц
все
кц
вывод индекс, «-й массив имеет максимальную сумму элементов:», нс
нц для сч от 1 до Н
вывод б[сч], » »
кц
вывод » — «, сумма
кон

алг цел массив
нач
цел сч
знач := 0
нц для сч от 1 до Н
а[сч] := int(rand(0,50))
вывод а[сч], » »
знач := знач + а[сч] кц
вывод » — «, знач, нс
кон

Переменные-массивы нельзя присваивать друг другу.

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий