Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ВМ_2010.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

Лабораторная работа 3

АЛГЕБРА И ФОРМИРОВАНИЕ МАТРИЦ

Задание. Сформировать целочисленную матрицу и матрицу из вещественных чисел и найти их произведение.

  1. Создайте новый проект командой Файл/Новый/Приложение.

  2. Сохраните файлы модуля и проекта командой Файл/Сохранить все под именами LR3 и PR_LR3. Для этого удобно использовать соответствующую быструю кнопку (Сохранить все). В последующих сеансах работы сохраненный проект можно открыть командой Файл/Открыть проект (или Повторно открыть). Теперь перейдем к проектированию приложения - переносам на форму необходимых компонентов и заданию их свойствам значений, а в обработчиках событий – размещению кодов соответствующих алгоритмов. (Рекомендуется нажимать кнопку Сохранить все по окончании работы с каждым компонентом.) В результате проектирования получим форму, представленную на рис.3.1.

  3. Выделите форму, щелкнув на ней левой кнопкой мыши, и в свойство Caption (надпись) впишите АЛГЕБРА И ФОРМИРОВАНИЕ МАТРИЦ.

  4. На форме размещены 12 меток Label (страница Стандарт), в свойство Caption (надпись) которых вписаны значения размеры, диапазон чисел, число строк, число столбцов, макс значение, мин значение; 4 кнопки Button (страница Стандарт), с надписями целочисленная матрица, матрица из вещественных чисел, произведение матриц, конец. Во всех перечисленных компонентах свойство Font имеет размер 10. Кроме того, на форме размещены три таблицы - компоненты StringGrid1,2,3 (страница Дополнительно). Заданы следующие значения свойств всех компонентов StringGrid: ColCount – 5, DefaultColWidth -48, FixedCols – 0, FixedRows – 0, Font – черный, обычный, размер 8, RowCount – 5. Раскрыв свойство Options в компонентах StringGrid1,2, установите значение подсвойства goEditing – true, что даст возможность редактировать таблицы в StringGrid1,2. Далее, на форме размещены 8 компонентов ввода целых чисел – CSpinEdit (страница Примеры). Во всех компонентах шрифт – обычный, размер – 8. У компонентов, расположенных под метками размеры, занесите: в свойство MaxValue – 10, MinValue – 1, Value - 3. У компонентов, расположенных под метками диапазон чисел и напротив меток макс значение занесите в свойство MaxValue – 100, MinValue – 0, Value – 5,

рис.3.1

рис.3.2

рис.3.3

а напротив меток мин значение - занесите в свойство MaxValue – 0, MinValue – -100, Value – -5. И, наконец, внизу формы размещен компонент StatusBar1 (страница Win32) – представляет собой ряд панелей, отображающих полосу состояния. Поскольку в нашем случае достаточно одной панели (для одного сообщения), то установите свойство SimplePanel = true. Свойство SimpleText представляет собой текст, который задается во время проектирования или программно (в нашем случае программно).

  1. Файл LR3.cpp содержит обработчики событий - щелчков на кнопках: Button1 с надписью целочисленная матрица, Button2 с надписью матрица из вещественных чисел, Button3 с надписью произведение матриц, Button4 с надписью конец.

/---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "LR3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

StatusBar1->SimpleText="";

StringGrid3->RowCount=0;

StringGrid3->ColCount=0;

StringGrid3->Cells[0][0]="";

StringGrid1->RowCount=CSpinEdit1->Value;

StringGrid1->ColCount=CSpinEdit2->Value;

for(int i=0;i<StringGrid1->RowCount;i++)

for(int j=0;j<StringGrid1->ColCount;j++)

StringGrid1->Cells[j][i]=IntToStr(

random(CSpinEdit3->Value-CSpinEdit4->Value+1)

+CSpinEdit4->Value);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

StatusBar1->SimpleText="";

StringGrid3->RowCount=0;

StringGrid3->ColCount=0;

StringGrid3->Cells[0][0]="";

StringGrid2->RowCount=CSpinEdit5->Value;

StringGrid2->ColCount=CSpinEdit6->Value;

for(int i=0;i<StringGrid2->RowCount;i++)

for(int j=0;j<StringGrid2->ColCount;j++){

float z=random(CSpinEdit7->Value-CSpinEdit8->Value+1)

+CSpinEdit8->Value

+(float)random(CSpinEdit7->Value-CSpinEdit8->Value+1)

/(CSpinEdit7->Value-CSpinEdit8->Value)-0.5;

if(z>CSpinEdit7->Value)z=CSpinEdit7->Value;

if(z<CSpinEdit8->Value)z=CSpinEdit8->Value;

StringGrid2->Cells[j][i]=FloatToStrF(z,ffGeneral,5,5);}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if(StringGrid1->ColCount!=StringGrid2->RowCount){

StatusBar1->SimpleText=

"Число столбцов матрицы с ЦЧ не равно числу строк матрицы с ВЧ!";

CSpinEdit2->SetFocus(); return;}

StringGrid3->RowCount=CSpinEdit1->Value;

StringGrid3->ColCount=CSpinEdit6->Value;

for(int i=0;i<StringGrid1->RowCount;i++)

for(int j=0;j<StringGrid2->ColCount;j++){

float z=0;

for(int k=0;k<StringGrid1->ColCount;k++)

z+=StrToInt(StringGrid1->Cells[k][i])*

StrToFloat(StringGrid2->Cells[j][k]);

StringGrid3->Cells[j][i]=FloatToStrF(z,ffGeneral,5,5);}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

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

  2. Измените параметры матриц подобно тому, как это сделано на рис.3.3, и получите сообщение в строке состояния. Щелчком на кнопке конец перейдите из режима выполнения в режим проектирования приложения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]