Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
48
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Вычисление средних арифметических массивов

Задача:

Найти средние арифметические пяти массивов, состоящих их десяти целых чисел.

Описание переменных:

arr – массив, состоящий их 5 элементов-массивов, каждый из которых в свою очередь содержит 10 целых чисел;

average – массив, содержащий средние арифметические вложенных массивов массива arr;

Алгоритм решения задачи:

  1. Заполняем массивы целыми числами с помощью функции fill_array. Функция вызывается в цикле for 5 раз и возвращает очередной подмассив массива arr.

  2. Для каждого вложенного массива целых чисел вычисляется среднее арифметическое с помощью функции found_average. Результат заносится в массив average.

Программа на языке Паскаль:

const n = 10; m = 5;

type

type_numbers = array[1..n] of integer;

type_arr = array[1..m] of type_numbers;

type_average = array[1..m] of real;

var

arr: type_arr; {array of arrays}

average: type_average; {array of averages}

i,j: byte;

function fill_array():type_numbers;

var i:byte; a:type_numbers;

begin

for i:=1 to n do a[i]:=random(50)+1;

fill_array := a;

end;

function found_average(a:type_numbers):real;

var i:byte; sum:integer;

begin

sum := 0;

for i:=1 to n do sum:=sum+a[i];

found_average := sum / n;

end;

begin

randomize;

for i:=1 to m do arr[i] := fill_array();

for i:=1 to m do begin

for j:=1 to n do write(arr[i,j]:3);

average[i]:=found_average(arr[i]);

writeln(' -- ', average[i]:6:2);

end;

readln

end.

Использование динамических массивов

Задача:

Десять раз генерировать ряд случайных чисел от 0 до 99.

Каждый ряд также должен иметь произвольную длину.

В каждом ряде следует найти максимальное число.

Сохранить только максимальные числа и вывести их на экран.

Описание переменных:

arrmax – обычный массив, где будут сохраняться максимальные значения рядов;

row – динамический массив для текущего ряда чисел;

n – длина текущего ряда чисел.

Алгоритм решения задачи:

Переменной j будет играть роль индекса элементов массива arrmax. В конце цикла for, который сделает 10 итераций, j будет увеличиваться на единицу, что будет означать переход к следующей ячейке массива.

Длина очередного ряда чисел случайна. Получив значение n, выделяем память под динамический массив с помощью процедуры getmem.

Заполняем динамический массив случайными числами.

Записываем в очередную ячейку массива arrmax первое значение динамического массива. Если какое-либо последующее значение массива, на который указывает row, будет больше arrmax[j], то производится перезапись значения.

После нахождения максимума память можно освободить (freemem).

Программа на языке Паскаль:

type

arrdinamic = array[1..50] of integer;

var

arrmax: array[1..10] of integer;

row: ^arrdinamic;

n, i, j, k: integer;

begin

randomize;

j := 1;

for i := 1 to 10 do begin

n := random(50) + 1;

getmem(row,n*sizeof(integer));

for k := 1 to n do

row^[k] := random(100);

arrmax[j] := row^[1];

for k := 1 to n do

if row^[k] > arrmax[j] then

arrmax[j] := row^[k];

freemem(row,n*sizeof(integer));

j := j + 1

end;

for i := 1 to 10 do

write(arrmax[i], ' ');

readln

end.