Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MASSIV.doc
Скачиваний:
16
Добавлен:
25.04.2019
Размер:
293.38 Кб
Скачать

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

I j

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))

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