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

Поиск максимального элемента среди минимальных элементов столбцов

Задача:

Дано: целочисленная матрица из n строк и m столбцов.

Найти: максимум из наименьших элементов столбцов.

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

Примерный алгоритм решения 1.

  1. Просмотреть каждый столбец. Наименьший элемент каждого столбца сохранить в одномерном массиве.

  2. Найти максимальное значение в одномерном массиве.

Примерный алгоритм решения 2.

  1. Найти наименьший элемент первого столбца и предположить, что он максимальный (записать в переменную).

  2. Найти наименьший элемент второго столбца. Сравнить его с предыдущим наименьшим. Если больше, заменить значение переменной. И т.д.

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

Const n = 4; m = 5;

var

matrix: array[1..n,1..m] of integer;

max, min, i, j: integer;

begin randomize;

for i := 1 to n do begin

for j := 1 to m do begin

matrix[i,j] := random(100);

write(matrix[i,j]:3);

end;

writeln;

end;

max := 0; {максимум среди минимумов}

for j := 1 to m do begin {просмотр столбцов}

min := matrix[1,j]; {предполагаем, что первый в столбце минимален}

for i := 2 to n do {просматриваем столбец построчно}

if matrix[i,j] < min then

min := matrix[i,j]; {замена минимума}

if min > max then

max := min {замена максимума}

end;

writeln(max);

readln

end.

Умножение матриц

Задача:

Три продавца продают четыре вида товаров. Количество продаваемого товара сведено в таблицу A.

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

В таблице B представлены цена каждого товара и комиссионные (наценка), получаемые от продажи.

Вырученные от продажи деньги подсчитываются так:

1-й продавец: 5 * 20.30 + 3 * 18.60 + 7 * 12.10 + 0 * 23.00 = 242.00

2-й продавец: 7 * 20.30 + 1 * 18.60 + 9 * 12.10 + 2 * 23.00 = 315.60

3-й продавец: 3 * 20.30 + 4 * 18.60 + 7 * 12.10 + 6 * 23.00 = 358.00

А полученные комиссионные так:

1-й продавец: 5 * 1.60 + 3 * 1.30 + 7 * 1.00 + 0 * 1.80 = 18.90

2-й продавец: 7 * 1.60 + 1 * 1.30 + 9 * 1.00 + 2 * 1.80 = 25.10

3-й продавец: 3 * 1.60 + 4 * 1.30 + 7 * 1.00 + 6 * 1.80 = 27.80

Эти вычисления называются умножением матриц и записываются так, как представлено на рисунке выше.

Число столбцов таблицы A должно совпадать с числом строк таблицы B. Результирующая таблица C имеет столько строк, сколько у A, и столько столбцов, сколько у B.

Следующая программа вводит матрицы A и B, перемножает эти матрицы и затем печатает их произведение – матрицу C:

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

type

atype = array[1..3,1..4] of integer;

btype = array[1..4,1..2] of real;

ctype = array[1..3,1..2] of real;

var

a: atype; b: btype; c: ctype;

n,i,j,k: integer;

begin

for n := 1 to 3 do

readln(a[n,1],a[n,2],a[n,3],a[n,4]);

for n := 1 to 4 do

readln(b[n,1],b[n,2]);

for i := 1 to 3 do

for j := 1 to 2 do begin

c[i,j] := 0;

for k := 1 to 4 do

c[i,j] := c[i,j] + a[i,k] * b[k,j];

end;

for n := 1 to 3 do

writeln(c[n,1]:8:2, c[n,2]:8:2);

readln

end.