VBA - страница 7

w i 1 0,3 w i , w 1 2,4; 1 и 4

2. Определете сумата от стойностите на функцията v , по-голяма от числото 5:

Лабораторна работа 7. Задачи с данни - двумерни масиви

Матрици - двумерните масиви се въвеждат и извеждат с помощта на вложени цикли: единият итерира по редовете, другият по колоните на матрицата. Няма значение кой от външните цикли, основното е, че вложените цикли ви позволяват да изброите всички комбинации от номера на редове и колони, т.е. вземете предвид всички елементи на матрицата. Да разгледаме, например, матрица M с размер 5 7.

Задача 17. Вход и изход на двумерен масив (матрица). Въвеждане на матрица от клавиатурата:

M(i,j) = InputBox ("Въведете елемента на матрицата"\

Въвеждане на матрица от Excel лист (матрицата се намира на листа в диапазона

не, например, A1:G5):

‘ Преминете през колони от A до G

Вложеният цикъл работи по следния начин. Броячът на реда i получава следващата стойност (тук е 1 в началото), след което цикълът с брояч j се изпълнява напълно, т.е. итерация върху всички елементи на низа. След това стойността на брояча на реда се увеличава с единица ( i = i +1 ) и цикълът над j се изпълнява отново напълно, като се итерират колоните на матрицата. Процедурата приключва след итерация на последния ред.

Ако i и j са разменени в заглавките на цикъла, т.е.:

За j = 1 до 7 За i = 1 до 5

тогава първо ще бъдат сортирани всички елементи от първата колона, след това втората и т.н.

Изход на матрица в лист на Excel, например в диапазона A8:G12:

„смяна на редове, започвайки от осми

„променете колоните от A на G

Задача 18 . Въведете отрицателните елементи от масив A(N M) в масив B и го отпечатайте.

Решение. Алгоритъмът на задачата се състои от три части: въведете матрицата A; проверете всеки негов елемент: ако гоотрицателно, поставете го в масив B; отпечатайте получения масив B. Първата и третата част - въвеждане и извеждане на данни се решават по стандартния начин за въвеждане и извеждане на масиви. Втората част е в основата на решението, нека я разгледаме по-подробно. Анализът на елементите A(i,j) на матрицата A може да се извърши, както обикновено за матрици, като се използват вложени For цикли, изброяващи всички редове (i) и колони (j) на матрицата. Ако A(i,j) е отрицателно, тогава на следващия елемент от масива B трябва да бъде присвоена тази стойност. Тук проблемът (и източникът на грешки) е как да се определи следващият елемент на масива B. Тъй като броят на отрицателните елементи в A не е известен предварително, точната дължина на масива B също не е известна предварително. Очевидно е само, че няма да надвишава N M - броя на елементите на оригиналната матрица A. Също така е ясно, че броячът на елементите на масива B не зависи по никакъв начин от следващите i и j. Оттук следва основният извод за решаване на задачи от този тип: за приемната решетка е необходимо да имате собствен, независим брояч на елементи. Нека вземем отделна променлива за него. Нека бъде к. Когато записвате отрицателно A(i,j) в B(k), броячът k ще се увеличи с единица и в края на цялата работа стойността на k ще покаже истинската дължина на масива B. Например, програмата взема началната матрица A с размер N=4, M=6. Цялата програма изглежда така:

Dim A(4, 6) като цяло число, B(24) като цяло число, k като цяло число За ​​i = 1 до 4

A(i,j)= InputBox (" Въведете стойността на матричния елемент "\ Cells(i,j)= A(i,j) ‘ показване на входната матрица в листа на Excel за

k \u003d 0 - нулиране на брояча на елементи от масив B, преди да започне да го попълва

За i = 1 до 4 За j = 1 до 6

Ако A(i, j) Тогава k = k + 1

Cells(7, i) = B(i) ' изходен масив B към Excel лист в ред 7

Тази програма може да бъде написана по-кратко чрез комбиниране на анализ с въвеждане иизход и съответно намаляване на броя на външните контури от три на един:

Dim A(4, 6) Като цяло число, B(24) Като цяло число, k Като цяло число k = 0

A(i,j)= InputBox (" Въведете стойността на матричния елемент "\ Клетки(i, j) = A(i, j\

Ако A(i, j) Тогава k = k + 1

B(k) = A(i, j\ Клетки(7, k) = B(k\

Задача 19 . Пребройте броя на четните числа в матрицата A(5 5).

Решение. Алгоритъмът включва въвеждане на матрица, повторение на нейните стойности с проверка на паритета, изчисляване на сумата от четни стойности и извеждане на резултата.

За да програмираме проблема, нека вземем променлива (например k) като брояч на четни числа. Ние прилагаме проверка на паритета с помощта на функцията Mod. Цялата програма: