Решение СЛАУ методом Крамера
Private Sub Command1_Click()
Dim a() As Double
Dim b() As Double
Dim x() As Double
Dim triangularMatrix() As Double
Dim N As Integer
N = InputBox("BBeduTe Pa3MepHocTb")
ReDim a(N, N)
ReDim b(N)
ReDim x(N)
Print "Na4al'na9 matrica"
For i = 1 To N
Print
For j = 1 To N
a(i, j) = InputBox("BBoD 3na4enuu' koficeHTa a(" & i & ";" & j & ")")
Print a(i, j);
Next
b(i) = InputBox("BBoD 3na4enuu' svobodnogo 4lena " & i)
Print b(i)
Next
Print
Print "Treygolnaya matrica"
Print
triangularMatrix = getNewMatrix(N, a, b)
For i = 1 To N
Print
For j = 1 To N
Print triangularMatrix(i, j);
Next
Print b(i)
Next
Print
Dim retmatrix() As Double
retmatrix = triangularMatrix
For i = N To 1 Step -1
For j = 1 To N
If i = N Then
If j = N Then
b(i) = b(i) / retmatrix(i, j)
retmatrix(i, j) = 1
End If
Else
If j = i Then
For k = j + 1 To N
retmatrix(i, k) = retmatrix(i, k) * b(k)
b(i) = b(i) - retmatrix(i, k)
retmatrix(i, k) = 0
Next
b(i) = b(i) / retmatrix(i, j)
End If
End If
Next
Next
x = b
Print "Bektor peIIIenuu'"
For i = 1 To N
Print x(i)
Next
Dim checkArr() As Double
Print
Print "Proverka"
Print
checkArr = check(a, x)
For i = 1 To N
Print checkArr(i)
Next
End Sub
Function getNewMatrix(ByVal N As Integer, ByRef a() As Double, ByRef b() As Double) As Double()
Dim newMatrix() As Double
newMatrix() = a
Dim temp() As Double
ReDim temp(N, N)
Dim newVector() As Double
newVector = b
Dim tempb() As Double
ReDim tempb(N)
Index = 1
Dim u As Integer
For h = Index To N - 1
For i = h To N
Dim k
For j = 1 To N
If i = h Then
temp(i, j) = newMatrix(i, j)
Else
ij0 = newMatrix(i - h + u, h)
ij1 = newMatrix(i, h)
k = -1 * (ij1 / ij0)
If ij1 <> 0 Then
temp(i, j) = newMatrix(i, j) + k * newMatrix(i - h + u, j)
Else
temp(i, j) = 0
End If
End If
Next j
If i = h Then
tempb(i) = newVector(i)
Else
tempb(i) = newVector(i) + k * newVector(i - h + u)
End If
Next i
newMatrix = temp
newVector = tempb
u = u + 1
Next h
b = newVector
getNewMatrix = temp
End Function
Function check(ByRef a() As Double, ByRef x() As Double) As Double()
Dim ch() As Double
ReDim ch(UBound(a))
For i = 1 To UBound(a)
Dim summ As Double
summ = 0
For j = 1 To UBound(a)
summ = summ + a(i, j) * x(j)
Next
ch(i) = sum
Next
check = ch
End Function
Работа с массивами
Dim A(3, 3) As Single
Private Sub Command1_Click()
For I = 0 To 3
For J = 0 To 3
A(I, J) = InputBox("Введите элемент ")
Next
Next
For I = 0 To 3
For J = 0 To 3
Print A(I, J);
Next
Print
Next
S = 0
For I = 0 To 3
For J = 0 To 3
S = S + A(I, J)
Next
Next
Print "Сумма элементов", S
V = S / 16
Print "Среднее арифметическое", V
P = 1
For I = 0 To 3
For J = 0 To 3
P = P * A(I, J)
Next
Next
Print "Произведение элементов массива"; P
M = A(1, 1)
k = 1
l = 1
For I = 0 To 3
For J = 0 To 3
If M <= A(I, J) Then GoTo 10 Else
M = A(I, J)
k = I
l = J
10 Next
Next
M = A(1, 1)
k = 1
l = 1
For I = 0 To 3
For J = 0 To 3
If M >= A(I, J) Then GoTo 20 Else
M = A(I, J)
k = I
l = J
20 Next
Next
Print "Минимальный элемент ("; k; ","; l; ")="; M
F = 0
For I = 0 To 3
F = F + A(I, I)
Next
Print "Максимальный элемент"; F
N = 0
For I = 0 To 3
For J = 0 To 3
If A(I, J) >= -1 And A(I, J) <= 1 Then N = N + 1
Next
Next
Print " Сумма элементов "; N
End Sub
ЗАДАНИЯ по компьютерной арифметике
Примеры решений:
623900 перевести в 11-ричную
62390 |11
-623898 |56718 |11
2 -56716 |5156 |11
2 -5148 |468|11
8 -462| 42 | 11
6 -33 |3
39682211 = 62390010
Б)1567:224 +112714 =112721
Переведем в 9-ную систему:
112721 |9
-112716 |12524|9
5 -12519|9
5|1391|9
-1386 |9
5|154|9
153|9
1|17|9
-9|1
11272110=815559
В) 6748*12316 -111011010012
Ход решения: Выписываем все цифры заданного числа в обратном порядке и домножаем каждую на 8 в степени 0, 1, 2 и т.д. Затем все суммируем. 6748 = 4·80 + 7·81 + 6·82 = 44410
Выписываем все цифры заданного числа в обратном порядке и домножаем каждую на 16 в степени 0, 1, 2 и т.д. Затем все суммируем. 12316 = 3·160 + 2·161 + 1·162 = 29110
Выписываем все цифры заданного числа в обратном порядке и домножаем каждую на 2 в степени 0, 1, 2 и т.д. Затем все суммируем. 111011010012 = 1·20 + 0·21 + 0·22 + 1·23 + 0·24 + 1·25 + 1·26 + 0·27 + 1·28 + 1·29 + 1·210 = 189710
444*291-1897=127307
Переведем в 2-ичную систему:
Ход решения: Делим число на 2 и выписываем остатки 127307 = 63653·2 + 1 63653 = 31826·2 + 1 31826 = 15913·2 + 0 15913 = 7956·2 + 1 7956 = 3978·2 + 0 3978 = 1989·2 + 0 1989 = 994·2 + 1 994 = 497·2 + 0 497 = 248·2 + 1 248 = 124·2 + 0 124 = 62·2 + 0 62 = 31·2 + 0 31 = 15·2 + 1 15 = 7·2 + 1 7 = 3·2 + 1 3 = 1·2 + 1 Последний множитель перед 2 равный 1 записываем первым. Затем записываем найденные остатки в обратном порядке. Получаем: 11111000101001011
Задания:
4.1. Используя Правило Счета, запишите первые 20 целых чисел в, троичной и пятеричной системах счисления.
в) троичная: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100, 101, 102, 110, 111, 112, 120, 121, 122, 200, 201; г) пятеричная: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 30, 31, 32, 33, 34.
4.2. а) 102; б) 1102; в) 10002; г) 100002; д) 1011002; е) 28; ж) 108; з)408; и) 2008; к) 100008; л) 1016; м) 2016; н) 10016; о) 9AFA16; п)CDF016.
4.3. а) 12; б) 10012; в) 1112; г) 11112; д) 100112; е) 78; ж) 178; з) 778; и) 1078; к) 7778; л) F16; м) 1F16; н) FF16; о) A0F16; п) FFF16.
4.4. Четное двоичное число оканчивается цифрой 0, нечетное двоичное - цифрой 1, четное троичное - цифрами 0, 1 или 2.
4.5. а) 7; б) 511; в) 4091.
4.7. а) ни в какой; б) в шестеричной.
4.8. Основание 5.
4.9. а) 91; б) 183; в) 225; г) 35/64; д) 52,75; е) 335; ж) 520; з) 668; и) 7/16; к)8333/64; л) 31; м) 2748; н) 4112; о) 41/64; п) 47825/32.
4.10. а) 11111012; 1758; 7D16; б) 111001012; 3458; E516; в) 10110002; 1308; 5816; г) 100101,012; 45,28; 25,416; д) 11001110,0012; 316,18; CE,216.
4.11. а) 11767,348; 13F7,716; б) 1653,5648; 3AB,BA16; в) 271,5478; B9,B3816;г) 13634,68; 179C,C16; д) 27,76748; 17,FBC16; е) 1425,628; 315,C816.
4.12. а) 10110011102; 13168; б) 10011111010000002; 1175008; в)101010111100110111102; 25363368; г) 1000000010000,0001000000012; 10020,04018; д) 1101010111100,100111012; 15274,4728.
4.13. а) 1011012, 1011102, 1011112, 1100002; б) 2023, 2103, 2113, 2123, 2203, 2213, 2223, 10003; в) 148, 158, 168, 178, 208; г) 2816, 2916, 2A16, 2B16, 2C16, 2D16, 2E16, 2F16, 3016;
4.14. а) 4710 - 1011112 - 578 - 4710 - 578 - 1011112 - 2F16 - 4710 - 2F16 - 1011112 - 4710; б) 7910 - 10011112 - 1178 - 7910 - 1178 - 10011112 - 4F16 - 7910 - 4F16 - 10011112 - 7910.
4.15.
4.16.
4.17. а) 110101002; б) 10001,02; в) 10101,12; г) 11001,12; д) 1348; е) 2248;ж) 24,38; з) 348; и) 1916; к) 2516; л) 19,A16; м) 2616.
4.18. а) в 16-й; б) в 10-й; в) в 3-й; г) в 8-й; д) в 16-й.
4.19. в) А=9, B=4, C=5, D=3, F=1, L=0, M=7, N=8; г) A=3, B=6, C=2, D=5, E=9, F=7, G=1, H=0, I=4, J=8; д) A=9, B=3, C=4, D=2, E=1, F=8, G=0, H=7, I=6.
4.20. а) 11012; б) 1,112; в) 1010,12; г) -10,012; д) 38; е) 338; ж) 22,18; з)11,258; и) 1716; к) 1A9216; л) -1,7E16; м) 4BBC16.
4.21. а) 111000012; б) 11000110,012; в) 1000000,1012; г) 1001011,1012; д)1748; е) 1428; ж) 15.268; з) 55.22228.
4.22. 11112.
4.23. 11001112; 10310; 1478.
4.24. а) 149310; б) 54210; в) 142010; г) 1110.
4.25. а) 1100102, 3816, 748, 7010; б) 1428, 10010, 11010012, 6E16; в)1011111112, 50010, 7778, 2FF16; г) 11000002, 6016, 1418, 10010.
4.26. а) 00000011, 00000010, 00000001, 00000000, 10000001, 10000010, 10000011; б) 00000011, 00000010, 00000001, 00000000, 11111110, 11111101, 11111100; в) 00000011, 00000010, 00000001, 00000000, 11111111, 11111110, 11111101.
4.27. а) 00001111; б) 10111111; в) 01000001; г) невозможно.
4.28. Обратный: а) 11110110, б) 11110000, в) 10000000, г) невозможнo. Дополнительный: а) 11110111; б) 11110001; в) 10000001; г) 10000000.
4.29. а) -8; б) -101; в) -23; г) -128.
4.30. а) -23; б) -96; в) -84; г) -127.
4.31. Обратный: а) 00000111; б) 11111000; в) 11110011; г) 11100001; д)00011001; е) 01111110; ж) переполнение; з) 10000000; и) невозможно. Дополнительный: а) 00000111; б) 11111001; в) 11110100; г) 11100010; д)00011001; е) 01111110; ж) переполнение; з) 10000001; и) 10000000.
Поставленная задача:
Заданы координаты двух точек. Определить, лежат ли они на одной окружности с центром в начале координат.
Private Sub Form_Click()
Me.Cls
Me.AutoRedraw = True
Me.DrawWidth = 1
x0 = InputBox("x=", "Координаты точки", 0)
y0 = InputBox("y=", "Координаты точки", 0)
x = InputBox("x=", "Координаты точки окружности", 0)
y = InputBox("y=", "Координаты точки окружности", 0)
r = InputBox("r=", "Радиус окружнсоти", 1)
If r ^ 2 >= (x0 - x) ^ 2 + (y0 - y) ^ 2 Then MsgBox "Точка принадлежит" Else MsgBox "Точка не принадлежит"
X1 = Me.Width / 2
Y1 = Me.Height / 2
Me.Print "A(" & x0 & "; " & y0 & ")"
Me.Print "O(" & x & "; " & y & ")"
Me.Print "R=" & r
Me.Line (X1, 100)-(X1, Me.Height - 100)
Me.Line (100, Y1)-(Me.Width - 100, Y1)
Me.DrawWidth = 2
Me.Circle (X1 + x, Me.Height - Y1 - y), r, vbRed
Me.DrawWidth = 5
Me.PSet (X1 + x0, Me.Height - Y1 - y0), vbBlue
End Sub
Поставленная задача:
Определить площадь треугольника
1способ: По формуле Герона
Dim a As Single
Dim b As Single
Dim c As Single
Dim p As Single
Dim s As Single
Private Sub Command1_Click()
Dim a As Single
Dim b As Single
Dim c As Single
Dim p As Single
Dim s As Single
a = InputBox("BBeDuTe a=")
Print "a="; a
b = InputBox("BBeDuTe b=")
Print "b="; b
c = InputBox("BBeDuTe c=")
Print "c="; c
p = (a + b + c) / 2
Print "p="; p
If ((a + b) >= c And (a + c) >= b And (b + c) >= a) Then
Print "PloIIIaDb="; Sqr((p - a) * (p - b) * (p - c))
Else: Print " He BblIIo/lHeHo Yc/loBue"
End If
End Sub
Private Sub Command2_Click()
Form1.Cls
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Command4_Click()
Dim a As Single
Dim b As Single
Dim y As Single
Dim p As Single
Dim s As Single
a = InputBox("BBeDuTe a=")
Print "a="; a
b = InputBox("BBeDuTe b=")
Print "b="; b
y = InputBox("BBeDuTe y=")
Print "y="; y
If y > 1 And y < 1 Then MsgBox "FALSE"
Print "PloIIIaDb="; s = 1 / 2 * a * b * sin(y)
End Sub
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|