Студопедия — Текст головной программы
Студопедия Главная Случайная страница Обратная связь

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

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






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; просмотров: 564. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

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

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

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