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

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

Текст программы. {Нахождение произведения матрицы Amxn на матрицу





 

program lr7_1_1;

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

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

{$APPTYPE CONSOLE}

 

Uses

SysUtils;

 

Type

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

stroka =string[30];

Var

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

i, j, k, l, m, n: integer;

flag: boolean;

 

procedure vvodmatr(var a: matr; const namefile: stroka; var m, n: integer; fl1, fl2: boolean);

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

Var

i, j: integer;

fin: text;

Begin

If fl1 then

Begin

assign(fin, namefile);

reset(fin);

end;

readln(fin, m, n);

for i: =1 to m do

Begin

for j: =1 to n do

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

readln(fin);

end;

If fl2 then

close(fin);

end;

procedure vivodmatr(namefile: stroka; const a: matr; const m, n: integer; zag: stroka; Const 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;

if namefile='con' then {если вывод на экран}

readln

Else

close(fout);

end;

 

procedure multmatr(const a, b: matr; var c: matr; const 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;

Begin

vvodmatr(a, 'matra.txt', m, n, True, false);

vvodmatr(b, 'matra.txt', n, l, False, true);

flag: =true;

vivodmatr('matrc.txt', a, m, n, 'Матрица A', flag);

flag: =false;

vivodmatr('matrc.txt', b, n, l, 'Матрица B', flag);

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

flag: =false;

vivodmatr('matrc.txt', c, m, l, 'Матрица C=A*B', flag);

end.

 

Решим данную задачу, используя компоненты Delphi. Упростим задачу, полагая, что матрицы будут квадратными и целочисленными. Но кроме произведения матриц найдем сумму и разность матриц.

Поскольку приложение будет иметь достаточно много функций, создадим меню с помощью компонента MainMenu. Для выбора файла для ввода данных воспользуемся компонентом OpenDialog, а для сохранения исходных матриц компонентом Savedialog страницы Dialogs. Для задания размерности матриц воспользуемся компонентом SpinEdit страницы Samples. Если исходные данные вводятся с клавиатуры, то сначала необходимо задать параметры соответствующих компонентов StringGrid. При вводе из файла эти параметры устанавливаются автоматически. Пока матрицы не определены, операции над ними выполнять нельзя, поэтому соответствующие функции не доступны.

Исходная форма имеет вид (рис. 7.10):

 

 

Рис.7.10 Форма приложения примера 7_1_2

 







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




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


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


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


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

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

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