Задание №37
Расположить в матрице A(N,N) элементы впоследовательности указанной на рисунке.
/>
Требования к программе:
1. Составить программу наалгоритмическом языке, выполняющую указанные преобразования с матрицами;
2. Вывести вектор, полученный случайно;
3. Вывести преобразованную матрицу сновым содержимым вектора;
4. Программа должна строиться такимобразом, чтобы существовала возможность её использования с массивами любойразмерности, содержащими произвольные элементы;
5. В программе должна быть предусмотренавыдача на печать исходных и преобразованных матриц;
6. Полученные результаты должны бытьзанесены в файл последовательного доступа и доступны для просмотра из него.
Изменённые свойстваприложения
Begin VB.Form frmMain
BorderStyle = 1'Fixed Single
Caption = «Задание№37»
ClientHeight =4365
ClientLeft = 45
ClientTop = 435
ClientWidth = 6180
LinkTopic = «Form1»
MaxButton = 0 'False
ScaleHeight = 4365
ScaleWidth = 6180
StartUpPosition= 2 'CenterScreen
Begin VB.FrameFrame2
Caption = «Управление»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 4125
Left = 4590
TabIndex = 7
Top = 120
Width = 1485
BeginVB.CommandButton cmdSave
Caption = "&Сохранение"
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 11
Top = 1530
Width = 1245
End
BeginVB.CommandButton cmdPrint
Caption = "&Печать"
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 10
Top = 930
Width = 1245
End
BeginVB.CommandButton cmdExit
Cancel = -1 'True
Caption = "&Выход"
Height = 375
Left = 120
TabIndex = 9
Top = 3630
Width = 1245
End
BeginVB.CommandButton cmdRun
Caption = "&Решение"
Default = -1 'True
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 8
Top = 330
Width = 1245
End
End
BeginVB.TextBox txtOriginal
Height = 675
Left = 90
Locked = -1 'True
MultiLine = -1'True
ScrollBars = 2'Vertical
TabIndex = 1
Top = 1350
Width = 4485
End
Begin VB.Frame Frame1
Caption = «Управление размерностью матрицы»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 885
Left = 90
TabIndex = 5
Top = 120
Width = 4515
BeginVB.TextBox txtN
Alignment = 2 'Center
Height = 285
Left = 3150
MaxLength = 4
TabIndex = 0
Top = 360
Width = 1215
End
Begin VB.LabelLabel2
Caption = «Чётная размерностьматрицы»
Height = 255
Left = 150
TabIndex = 6
Top = 390
Width = 2895
End
End
BeginVB.TextBox txtResult
Height = 1875
Left = 90
Locked = -1 'True
MultiLine = -1'True
ScrollBars = 2'Vertical
TabIndex = 2
Top = 2370
Width = 4485
End
Begin VB.LabelLabel3
Alignment = 2 'Center
BorderStyle = 1'Fixed Single
Caption = «Упорядоченнаяматрица»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 255
Left = 90
TabIndex = 4
Top = 2070
Width = 4485
End
Begin VB.LabelLabel1
Alignment = 2 'Center
BorderStyle = 1'Fixed Single
Caption = «Полученныйслучайный вектор»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 255
Left = 90
TabIndex = 3
Top = 1050
Width = 4485
End
End
AttributeVB_Name = «frmMain»
AttributeVB_GlobalNameSpace = False
AttributeVB_Creatable = False
AttributeVB_PredeclaredId = True
AttributeVB_Exposed = False
Текст программы на языке Microsoft Visual Basic 6.00 Ext
OptionExplicit
Private SubcmdExit_Click()
Unload Me
End Sub
Private SubcmdPrint_Click()
Me.PrintForm
End Sub
Private SubcmdRun_Click()
txtN.Enabled =False
Dim i AsInteger, j As Integer
Dim t AsInteger, n As Integer
Dim k AsInteger, p As Integer
n =Val(txtN.Text)
txtOriginal =Empty
Dim MV AsInteger
MV = n ^ 2 / 2+ n
ReDim a(n, n)As Integer
ReDim x(MV) AsInteger
RandomizeTimer
For i = 1 ToMV
x(i) = Int(Rnd* 90) + 10
txtOriginal =txtOriginal & Str(x(i)) & " "
Next i
k = 0
For i = n To n/ 2 — 1 Step -1
If i / 2 =Int(i / 2) Then
For j = n — i+ 1 To i
k = k + 1: a(i,j) = x(k)
Next j
Else
For j = i To n- i + 1 Step -1
k = k + 1: a(i,j) = x(k)
Next j
End If
Next i
For i = n / 2To 1 Step -1
If i / 2 =Int(i / 2) Then
For j = n — i+ 1 To i Step -1
k = k + 1
a(i, j) = x(k)
Next j
Else
For j = i To n- i + 1
k = k + 1
a(i, j) = x(k)
Next j
End If
Next i
For i = 1 To n
For j = 1 To n
txtResult =txtResult & Format(a(i, j), «00») & " "
Next j
txtResult =txtResult & vbCrLf
Next i
cmdPrint.Enabled= True
cmdSave.Enabled= True
End Sub
Private SubcmdSave_Click()
On Error GoToErr_Lbl:
Open App.Path& "\Result.txt" For Output As #1
Print #1,«Задание №46» & vbCrLf & vbCrLf
Print #1,«Исходная матрица:» & vbCrLf
Print #1,txtOriginal.Text & vbCrLf
Print #1,«Полученная матрица:» & vbCrLf
Print #1,txtResult.Text
Close #1
Exit Sub
Err_Lbl:
MsgBox «Произошла ошибка записи»,vbCritical, «Внимание»
End Sub
Private SubtxtN_Change()
If Val(txtN)> 8 Or Val(txtN) = 0 Or Val(txtN) Mod 2 0 Then
cmdRun.Enabled= False
Else
cmdRun.Enabled= True
End If
End Sub
Private SubtxtN_KeyPress(KeyAscii As Integer)
If KeyAscii
If NotIsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub
Внешний вид приложения:
/>
Результат работыприложения:
/>
Приложение1
Form1
VERSION 5.00
Begin VB.FormfrmMain
BorderStyle = 1'Fixed Single
Caption = «Задание №37»
ClientHeight =4365
ClientLeft = 45
ClientTop = 435
ClientWidth = 6180
LinkTopic = «Form1»
MaxButton = 0 'False
ScaleHeight = 4365
ScaleWidth = 6180
StartUpPosition= 2 'CenterScreen
Begin VB.FrameFrame2
Caption = «Управление»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 4125
Left = 4590
TabIndex = 7
Top = 120
Width = 1485
BeginVB.CommandButton cmdSave
Caption = "&Сохранение"
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 11
Top = 1530
Width = 1245
End
BeginVB.CommandButton cmdPrint
Caption = "&Печать"
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 10
Top = 930
Width = 1245
End
BeginVB.CommandButton cmdExit
Cancel = -1 'True
Caption = "&Выход"
Height = 375
Left = 120
TabIndex = 9
Top = 3630
Width = 1245
End
BeginVB.CommandButton cmdRun
Caption = "&Решение"
Default = -1 'True
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 8
Top = 330
Width = 1245 End
End
BeginVB.TextBox txtOriginal
Height = 675
Left = 90
Locked = -1 'True
MultiLine = -1'True
ScrollBars = 2'Vertical
TabIndex = 1
Top = 1350
Width = 4485
End
Begin VB.Frame Frame1
Caption = «Управлениеразмерностью матрицы»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 885
Left = 90
TabIndex = 5
Top = 120
Width = 4515
BeginVB.TextBox txtN
Alignment = 2 'Center
Height = 285
Left = 3150
MaxLength = 4
TabIndex = 0
Top = 360
Width = 1215
End
Begin VB.LabelLabel2
Alignment = 2 'Center
BorderStyle = 1'Fixed Single
Caption = «Чётная размерность матрицы»
Height = 255
Left = 150
TabIndex = 6
Top = 390
Width = 2895
End
End
BeginVB.TextBox txtResult
Height = 1875
Left = 90
Locked = -1 'True
MultiLine = -1'True
ScrollBars = 2'Vertical
TabIndex = 2
Top = 2370
Width = 4485
End
Begin VB.LabelLabel3
Alignment = 2 'Center
BorderStyle = 1'Fixed Single
Caption = «Упорядоченная матрица»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 255
Left = 90
TabIndex = 4
Top = 2070
Width = 4485
End
Begin VB.LabelLabel1
Alignment = 2 'Center
BorderStyle = 1'Fixed Single
Caption = «Полученный случайный вектор»
BeginPropertyFont
Name = «MSSans Serif»
Size = 8.25
Charset = 204
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough =0 'False
EndProperty
Height = 255
Left = 90
TabIndex = 3
Top = 1050
Width = 4485
End
End
AttributeVB_Name = «frmMain»
AttributeVB_GlobalNameSpace = False
AttributeVB_Creatable = False
AttributeVB_PredeclaredId = True
AttributeVB_Exposed = False
OptionExplicit
Private SubcmdExit_Click()
Unload Me
End Sub
Private SubcmdPrint_Click()
Me.PrintForm
End Sub
Private SubcmdRun_Click()
txtN.Enabled =False
Dim i AsInteger, j As Integer
Dim t AsInteger, n As Integer
Dim k AsInteger, p As Integer
n =Val(txtN.Text)
txtOriginal =Empty
Dim MV AsInteger
MV = n ^ 2 / 2+ n
ReDim a(n, n)As Integer
ReDim x(MV) AsInteger
RandomizeTimer
For i = 1 ToMV
x(i) = Int(Rnd* 90) + 10
txtOriginal =txtOriginal & Str(x(i)) & " "
Next i
k = 0
For i = n To n/ 2 — 1 Step -1
If i / 2 =Int(i / 2) Then
For j = n — i+ 1 To i
k = k + 1
a(i, j) = x(k)
Next j
Else
For j = i To n- i + 1 Step -1
k = k + 1
a(i, j) = x(k)
Next j
End If
Next i
For i = n / 2To 1 Step -1
If i / 2 =Int(i / 2) Then
For j = n — i+ 1 To i Step -1
k = k + 1
a(i, j) = x(k)
Next j
Else
For j = i To n- i + 1
k = k + 1
a(i, j) = x(k)
Next j
End If
Next i
For i = 1 To n
For j = 1 To n
txtResult =txtResult & Format(a(i, j), «00») & " "
Next j
txtResult =txtResult & vbCrLf
Next i
cmdPrint.Enabled= True
cmdSave.Enabled= True
End Sub
Private SubcmdSave_Click()
On Error GoToErr_Lbl:
Open App.Path& "\Result.txt" For Output As #1
Print #1,«Задание №46» & vbCrLf& vbCrLf
Print #1,«Исходная матрица:» & vbCrLf
Print #1,txtOriginal.Text & vbCrLf
Print #1,«Полученная матрица:» & vbCrLf
Print #1,txtResult.Text
Close #1
Exit Sub
Err_Lbl:
MsgBox «Произошлаошибка записи», vbCritical, «Внимание»
End Sub
Private SubtxtN_Change()
If Val(txtN)> 8 Or Val(txtN) = 0 Or Val(txtN) Mod 2 0 Then
cmdRun.Enabled= False
Else
cmdRun.Enabled= True
End If
End Sub
Private SubtxtN_KeyPress(KeyAscii As Integer)
If KeyAscii
If NotIsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub
Приложение2
Задание №46
Исходная матрица:
39 41 16 98 68 47 13 87 9412 12 69 59 46 52 85 71 38 18 19 77 81 92 26 23 94 66 83 28 23 23 15 39 50 51 7858 22 73 41
Полученная матрица:
39 50 51 78 58 22 73 41
00 15 23 23 28 83 66 00
00 00 92 26 23 94 00 00
00 00 00 81 77 00 00 00
00 00 00 19 18 00 00 00
00 00 52 85 71 38 00 00
00 46 59 69 12 12 94 00
39 41 16 98 68 47 13 87