
- •9. Одномерные массивы
- •Дан одномерный массив а(100). Найти количество элементов
- •Dim n As Byte
- •10. Варианты заданий по теме “Одномерные массивы”
- •Даны натуральное число n, действительные числа a1,…,An. В последовательности a1,…,An все отрицательные члены увеличить на 0.5, а все неотрицательные заменить на 0.1.
- •11. Двумерные массивы
- •1. Дан массив а ( 100, 100). Подсчитать, сколько раз встречается в этом массиве максимальное по величине число.
- •Function summa(n As Byte, m As Byte, a() As Single) As Single
- •End Function
- •12. Варианты заданий по теме “Двумерные массивы”
11. Двумерные массивы
1. Дан массив а ( 100, 100). Подсчитать, сколько раз встречается в этом массиве максимальное по величине число.
Выполнение в TP:
Program MATR;
Var A:array[1..100,1..100] of real;
i, j, kol:integer; max:real;
Begin
Write (“Введи n=”); readln(n);
Write(“Введи m:”); readln(m);
For i:=1 to n do
For j:=1 to m do
Begin
Write(“Введи A[“,i,”,”,j,”]:”);
Readln(A[ i,j ] );
End;
max:=A[ 1,1 ]; kol:=0;
For i:=1 to n do
For j:=1 to m do
If A[ i,j ] > max then max:=A[ i,j ];
For i:=1 to n do
For j:=1 to m do
If A[ i,j ]=max then kol:=kol+1;
Writeln(“Ответ:”,kol);
End.
в VBA:
Sub MATR( )
Dim i As Byte
Dim j As Byte
Dim kol As Byte
Dim A(100, 100) As Single
Dim max As Single
n = inputBox(“Введи n=”) : m = inputBox(“Введи m=”)
ReDim A(n,m) As Single
For i = 1 To n
For j = 1 To m
A(i, j) = InputBox ("Введи A[" & i & "," & j & "]:", "Ввод массива")
Next j
Next i
max = A(1, 1) : kol = 0
For i = 1 To n
For j = 1 To m
If A(i, j) > max Then max = A(i, j)
Next j
Next i
For i = 1 To n
For j = 1 To m
If A( i, j ) = max Then kol = kol + 1
Next j
Next i
MsgBox kol, 0, "Ответ:"
End Sub
В среде Мicrosoft Excel : матрица задана в диапазоне B2:F6 .
1 способ:
2 способ: использовать функцию СЧЕТЕСЛИ().
2. Сформировать матрицу A, элементы которой вычисляются по формулам:
A1,j=(j2+0.3)*j , где j=1, 2, 3.
A2,j=(-1)j+1 *(j+0.1)
A3,j=(-1)j *(j+0.4)
Найти элементов матрицы, расположенных в строках с отрицательным элементом на главной диагонали.
Решение приведено на VBA с использованием подпрограммы функции:
Sub Reshenie()
Dim k As Byte : Dim i As Byte
Dim a (3, 3) As Single
Dim s As Single
For k = 1 To 3 ' вложенныe циклы для формир-я матрицы
For i = 1 To 3
If k = 1 Then a(k, i) = (i ^ 2 + 0.3) * i
If k = 2 Then a(k, i) = (-1) ^ (i + 1) * (i + 0.1)
If k = 3 Then a(k, i) = (-1) ^ i * (i + 0.4)
Range("b11").Cells(k, i).Value = a(k, i)
Next i
Next k
s = summa(3, 3, a) 'Вызов функции для получения суммы
Range("c9").Value = s 'Запись результата на рабочий лист
MsgBox "сумма=" & s, , "Результат" 'Вывод результата
End Sub
Function summa(n As Byte, m As Byte, a() As Single) As Single
Dim k As Byte, i As Byte, j As Byte
Dim sum As Single
sum = 0
'Вычисление суммы для строки с отрицательным элементом
For i = 1 To m
For j = 1 To m
If a(i, i) < 0 Then
sum = sum + a(i, j)
End If
Next j
Next i
'Присваивание функции конечного результата
summa = sum
End Function
В cреде Excel:
A B C D
|
1 |
2 |
3 |
|
1 |
=(B1^2+0,3)*B1 |
=(C1^2+0,3)*C1 |
=(D1^2+0,3)*D1 |
|
2 |
=(-1)^(B1+1)*(B1+0,1)
|
=(-1)^(C1+1)*(C1+0,1)
|
=(-1)^(D1+1)*(D1+0,1)
|
|
3 |
=(-1)^B1*(B1+0,4) |
=(-1)^C1*(C1+0,4) |
=(-1)^D1*(D1+0,4) |
|
|
|
|
|
|
В ячейку В2, B3, B4 записывается формула для строки и копируется по горизонтали на блок ячеек B2:D2 , B3:D3, B4:D4 cоответственно.
В результате получим матрицу:
Вычисление суммы для строк с отрицательным элементом на главной диагонали: =СУММ(СУММЕСЛИ(B2;"<0";B2:D2);СУММЕСЛИ(C3;"<0";B3:D3);СУММЕСЛИ(D4;"<0";B4:D4))