Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Задача 19. Составить программу умножения матрицы A(n, k) на B(k, m).






Решение

Program Problem19;

uses WinCrt;

const

n = 6; m = 6;

type

s = array [1..m, 1..n] of integer;

t = array [1..n, 1..m] of integer;

f = array [1..m, 1..n] of integer;

var

a: s; b: t; c: f; i, j: integer;

{----------------------------------------------------------------------------------------}

Procedure create_two1(n, m: integer; var a: s);

var

i, j: integer;

begin

writeln('Заданная первая матрица');

randomize;

for i: = 1 to n do

begin

for j: = 1 to m do

begin

a[i, j]: = random(21) - 10;

write(a[i, j]: 6, ' ')

end;

writeln

end

end;

{----------------------------------------------------------------------------------------}

Procedure create_two2(n, m: integer; var b: t);

var

i, j: integer;

begin

writeln('Вторая заданная матрица');

randomize;

for i: = 1 to n do

begin

for j: = 1 to m do

begin

b[i, j]: = random(11);

write(b[i, j]: 6, ' ')

end;

writeln

end

end;

{----------------------------------------------------------------------------------------}

Procedure div_matrix(n, m: integer; a: s; b: t; var c: f);

var

i, j, k: integer;

begin

for i: = 1 to n do

for j: = 1 to m do

begin

c[j, i]: = 0;

for k: = 1 to m do c[j, i]: = c[j, i] + a[j, k]*b[k, i]

end

end;

{----------------------------------------------------------------------------------------}

begin

create_two1(n, m, a);

create_two2(n, m, b);

div_matrix(n, m, a, b, c);

writeln('Результат умножения матриц');

for i: = 1 to n do

begin

for j: = 1 to n do write(c[i, j]: 6, ' ');

writeln

end

end.

Задача 20. Процедура удаления заданной строки из массива и вывод нового массива на экран:

N - число строк, m - число столбцов, k - номер удаляемой строки.

 

Решение

Procedure distance_line(n, m, k: integer; var a: t);

var

i, j: integer;

begin

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

writeln('Новый массив без ', k, '-й строки ');

for i: = 1 to n - 1 do

begin

for j: = 1 to m do write(a[i, j]: 6, ' '); writeln

end

end;

Задача 21. Процедура вставки нового столбца в заданный двумерный массив будет следующей: n - число строк заданного массива, m - число столбцов заданного массива, k - номер вставляемой строки, c - массив элементов - новой вставляемой строки.

Решение

Procedure insert_column(n, m, k: integer; c: f; var a: t);

var

i, j: integer;

begin

{Перемещение столбцов в конец для освобождения места}

for i: = 1 to n do

for j: = m + 1 downto k + 1 do a[i, j]: = a[i, j - 1];

{Вставка нового столбца}

writeln('Массив с новым ', k, '-м столбцом');

for i: = 1 to n do a[i, k]: = c[i];

for i: = 1 to n do

begin

for j: = 1 to m + 1 do write(a[i, j]: 6, ' ');

writeln

end

end;

Задача 22. Процедура транспонирования матрицы.

Решение

Описание массивов может быть таким:

Const

n = 5; m = 6;

Type

s = array [1..n, 1..m] of integer;

t = array [1..m, 1..n] of integer;

Var

a: s;

b: t;

{----------------------------------------------------------------------------------------}

Procedure transpose(n, m: integer; a: s; var b: t);

var

i, j: integer;

begin

for i: = 1 to n do

for j: = 1 to m do b[j, i]: = a[i, j];

end;

Задача 23. Процедура упорядочивания и перестановки элементов массива по суммам элементов строк.

 

Решение

Procedure order_summ_column(n, m: integer; var a: t);

var

i, j, k, f, p: integer;

begin

for i: = 1 to m do

begin

k: = i;

for j: = i + 1 to m do if a[n + 1, j] < = a[n + 1, k] then k: = j;

for f: = 1 to n + 1 do

begin

p: = a[f, i]; a[f, i]: = a[f, k]; a[f, k]: = p

end

end

end;

Задача 24. Генератор сочетаний






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.