Основные приемы построения классов и разработка программного интерфейса для работы с базами данных с помощью языка Visual Basic 6,0, страница 2

2.  Усовершенствуйте программу так, чтобы формировалась полная матрица по тому  же   принципу,  т.е.   каждый  элемент  матрицы  является  суммой   его индексов.

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

Учебное задание 11.2

Написать программу, которая читает содержимое файла последовательного доступа и формирует две целочисленные квадратные матрицы одинакового размера. Затем складывает полученные матрицы и формирует выходной файл Summa.txt в рабочем каталоге. В выходном файле должны быть выведены обе исходные матрицы и матрица, полученная в результате суммирования.

Технология выполнения учебного задания 11.2

1.  Создайте новый проект File, New Project   (Файл, Новый проект) или при открытии Visual Basic выберите значок Standard.exe и щелкните по кнопке Открыть.

2.  Задайте  свойству Name  формы  значение frmSummajmatrics,  а свойству Caption формы — значение Операция сложения матриц.

3.  Разместите в нижней части формы кнопки Read, Summa и Record. Задайте свойствам Name значения cmdRead, cmdSumma и cmdRecord. Щелчок по кнопке Read будет приводить к чтению данных из файла и формированию двух матриц заданного пользователем размера. Кнопка Summa предназначена для выполнения операции сложения двух матриц, а кнопка Record - для записи матриц в файл. Разместите также на форме стандартный элемент Microsoft Common Dialog 6.0. Задайте свойству Name значение comFiles.

4.  Матрицы A(nxn), B(nxn)   и C(nxn) должны быть объявлены как глобальные массивы в секции (General)(Declarations) формы. Но так как размерность матриц пользователь должен задавать в процессе выполнения программы, массивы нужно объявить динамическим:

Option Explicit

Private A(), B(), C() As Integer

Private intN As Integer

5.   Запрограммируем событие Click для элемента cmdRead.

Private Sub cmdRead_Click() Dim i, j filenol As Integer Dim strPath As String

' Используя метод ShowOpen для элемента comFiles определим полное имя ' файла с исходными данными comFiles. ShowOpen strPath = comFiles.FileName

intN = Уа1(1при1Вох("Введите размерность массивов", "Размер массивов")) ' Переопределить размерность массивов

ReDim A(l To intN, I To intN), B(l TojntN, I To intN), C(l To intN, I To intN)

filenol = FrceFile

For i = 1 To intN

For j = 1 To intN

Input #filenol, A(i, j)

Next j

Next i

frmSumma_matrics.Print "Формирование первой матрицы завершено." For i = 1 То intN For j = 1 To intN

Input #filenol, B(i, j) Nextj Next i

frmSumma_matrics.Print "Формирование второй матрицы завершено." Close #filenol End Sub

6.    Запрограммируем событие Click для элемента cmdSumma.
Private Sub cmdSumma_Click()

Dim i, j As Integer For i = 1 To intN Forj = l To intN

C(i,j) = A(i,j) + B(i,j) Nextj Nexti

frmSumma_matrics.Print "Формирование результирующей матрицы завершено." End Sub

7.   Опишем процедуру обработки события Click для элемента cmdRecord.

Private Sub cmdRecord_Click() Dim i, j, fileno2 As Integer Dim strPath As String fileno2 = FrccFile

comFilcs.ShowSave

Open comFilcs.FilcName For Output As fileno2

Print #filcno2, "Первая матрица:"

For i = 1 To intN

Forj = 1 To intN

Print # fileno2, A(i, j);

Next j Print #fileno2, Nexti

Print #fileno2, "Вторая матрица:" For i = 1 To intN

Forj = lTointN

Print #fileno2,B(i,j);

Nextj Print #fileno2, Next i

Print #fileno2, "Результирующая матрица:" For i = 1 To intN

Forj = 1 To intN

Print #fileno2, C(i, j);

Next j Print #fileno2, Next i

Close #fileno2

frmSumma_matrics.Print "Матрица результата выведена в файл." End Sub

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

Контрольные вопросы

1.  Что означает оператор Private A() As Integer ?

2.  Что происходит в строке программы ReDim A(l To intN, I To intN) ? Почему
необходим такой оператор в программе?

3.  В чем разница между статическим и динамическим массивами?

4.  Для чего предназначен элемент Microsoft Common Dialog 6.0? Какие методы
инкапсулированы в этот элемент?

Контрольные упражнения

1.  Усовершенствуйте    программу    дополнительной    проверкой    правильности
выполнения операции сложения матриц. Допишите процедуру вычитания из
результирующей матрицы любой из исходных.

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

3.  Усовершенствуйте программу так, чтобы осуществлялась корректная проверка
на случай «недостаточности данных».

Самостоятельное задание 1

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