Студопедия Главная Случайная страница Обратная связь

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

Текст головной программы





program lr8_1_2;

{Нахождение произведения матрицы Amxn на матрицу Bnxl, получая матрицу Cmxl.

Использование внешнего файла}

{$APPTYPE CONSOLE}

 

Uses

SysUtils;

 

Type

matr = array [1..10, 1..10] of real;

stroka =string[30];

 

Var

a, b, c: matr; {исходные матрицы и матрица результата}

l, m, n: integer;

namefilein, namefileout: stroka;

{$I Unit1.pas} //Подключение внешнего файла

Begin

write('Vvedite imja vchodnogo fayla ');

readln(namefilein);

write('Vvedite imja vichodnogo fayla ');

readln(namefileout);

vvodmatr(a, namefilein, m, n, true, false);

vvodmatr(b, namefilein, n, l, false, true);

vivodmatr(namefileout, a, m, n, 'Matrica A', true);

vivodmatr(namefileout, b, n, l, 'Matrica B', false);

multmatr(a, b, c, m, n, l);

vivodmatr(namefileout, c, m, l, 'Matrica C=A*B', false);

end.

 

Содержимое файла Unit1.pas

 

{Процедуры ввода, вывода матриц, нахождения произведения

матрицы Amxn на матрицу Bnxl,

получая матрицу Cmxl}

 

procedure vvodmatr(var a: matr; namefile: stroka; var m, n: integer; flag1, flag2: boolean);

{Ввод матрицы}

Var

i, j: integer;

fin: text;

Begin

if flag1 then {Открывать файл? }

Begin

assign(fin, namefile);

reset(fin);

end;

readln(fin, m, n);

for i: =1 to m do

for j: =1 to n do

read(fin, a[i, j]);

if flag2 then {Закрывать файл? }

close(fin);

end;

 

procedure vivodmatr(namefile: stroka; a: matr; m, n: integer; zag: stroka; flag: boolean);

{Вывод матрицы}

Var

i, j: integer;

fout: text;

Begin

assign(fout, namefile);

If flag then

rewrite(fout)

Else

append(fout);

writeln(fout, zag);

for i: =1 to m do

Begin

for j: =1 to n do

write(fout, a[i, j]: 8: 2);

writeln(fout);

end;

close(fout);

end;

 

procedure multmatr(a, b: matr; var c: matr; m, n, l: integer);

{Нахождение произведения матрицы}

Var

i, j, k: integer;

s: real;

Begin

for i: =1 to m do

for j: =1 to l do

Begin

s: =0;

for k: =1 to n do

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

c[i, j]: =s;

end;

end;

 

Вместо Unit-а воспользуемся динамически подключаемой библиотекой (DLL).

 

Текст головной программы

 

program Project1;

//Перемножение матриц

//Использование библиотеки DLL

{$APPTYPE CONSOLE}

 

Uses

SysUtils;

Type

matr = array [1..10, 1..10] of real;

stroka =string[30];

{Ввод матрицы}

procedure vvodmatr(var a: matr; namefile: stroka; var m, n:

integer; flag1, flag2: boolean);

external 'project2.dll';

{Вывод матрицы}

procedure vivodmatr(namefile: stroka; a: matr; m, n: integer; zag: stroka; flag: boolean); external 'project2.dll';

{Нахождение произведения матрицы}

procedure multmatr(a, b: matr; var c: matr; m, n, l: integer);

external 'project2.dll';

 

Var

a, b, c: matr; {исходные матрицы и матрица результата}

l, m, n: integer;

namefilein, namefileout: stroka;

Begin

write('Vvedite imja vchodnogo fayla ');

readln(namefilein);

write('Vvedite imja vichodnogo fayla ');

readln(namefileout);

vvodmatr(a, namefilein, m, n, true, false);

vvodmatr(b, namefilein, n, l, false, true);

vivodmatr(namefileout, a, m, n, 'Matrica A', true);

vivodmatr(namefileout, b, n, l, 'Matrica B', false);

multmatr(a, b, c, m, n, l);

vivodmatr(namefileout, c, m, l, 'Matrica C=A*B', false);

end.

 







Дата добавления: 2014-11-10; просмотров: 590. Нарушение авторских прав; Мы поможем в написании вашей работы!




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Studopedia.info - Студопедия - 2014-2026 год . (0.011 сек.) русская версия | украинская версия