Вы находитесь на странице: 1из 5

Постановка задачи

Составить алгоритм и программу для вычисления и вывода на печать в


общепринятом виде элементов матрицы по формуле:
z ij =sin
2
x+

3
ln ⁡∨ y j + x i∨¿
¿
i 2
x i y j + x i cos y j
где i =1,2,…,6; j=1,2,…,6.
Определить число ненулевых по величине элементов в каждой строке
этой матрицы.

Блок-схема алгоритма решения задачи

i=1, 6

j=1, 6
j=1, 6

j=1, 6

Zij<>0

S=S+1

Описание блок-схемы алгоритма решения задачи


Блок 1 - ввод значений заданных элементов массивов Хi и Yj
Блоки 2 - 5 - сложный цикл (цикл в цикле) для вычисления элементов
матрицы по заданной формуле
Блок 2 - начало внешнего цикла (вычисление элементов матрицы
осуществляется по строкам)
Блок 3 - начало внутреннего цикла для вычисления элементов матрицы в
текущей строке
Блок 4 - вычисление элемента матрицы по заданной формуле
Блок 5 - печать вычисленных элементов матрицы
Блок 6 - задание начального значения числа ненулевых элементов
матрицы (S=0)
Блоки 7 - 10 - сложный цикл для выполнения второй части задания
(вычисление числа ненулевых элементов матрицы)
Блок 7 - начало внешнего цикла (по строке)
Блок 8 - начало внутреннего цикла, где проверяются элементы матрицы
текущей строки
Блок 9 - проверка условия, является ли текущий элемент матрицы
ненулевым
Блок 10 - вычисление числа ненулевых элементов матрицы
Блок 11 - вывод на печать числа ненулевых элементов матрицы

Программный код
' Вычисление и обработка элементов матрицы
' Описание массивов и переменных
Dim x(6) As Single, y(6) As Single, z(6,6) As Single
Dim i As Byte, j As Byte, s As Single
' Ввод исходных массивов через окно ввода, вывод на экранную форму
Print "Значения массива X"
For i = 1 To 6
x(i)= Val(InputBox("Введите x(i) ","Массив X"))
Print "x(" ; I ; ")=" ; x(i)
Next i
Print "Значения массива Y"
For j = 1 To 6
y(j)= Val(InputBox("Введите y(j) ","Массив Y"))
Print "y(" ; j ; ")=" ; y(j)
Next j
' Вычисление и вывод на печать элементов матрицы
Print "Элементы матрицы"
For i = 1 To 6
For j = 1 To 6
z(i,j)=(sin(x(i))*sin(x(i))+(log(abs(x(i)+y(j))))^(1/3))/(x(i)*y(j)+x(i)*cos(y(j)*y(j)))
Print z(i, j);
Next j
Print
Next i
' Вычисление числа ненулевых элементов матрицы
'Начальное значение суммы
For i = 1 To 6
S=0
For j = 1 To 6
If z(i,j)<>0 Then s=s+1 'Накопление суммы
Next j
Print "Сумма положительных элементов матрицы S="; s
Next i
Описание операторов, используемых в программе
Оператор DIM объявляет (описывает) тип используемых в программе
одномерных массивов Xi и Yj, двумерного массива Zij и простых
переменных (например, тип Single – это вещественная переменная обычной
точности, Byte – короткое неотрицательное целое число). Под массивы в
памяти резервируется определенное количество ячеек памяти.
Для организации циклов (повторяющихся действий) используется
оператор цикла FOR…NEXT (соответственно начало и конец цикла). В
программе использованы как простые, так и сложные циклы (один цикл -
внешний, может содержать цикл внутренний). Например, если переменной
внешнего цикла является переменная I, которая соответствует индексу
элементов массива Хi, то этот цикл выполняется пять раз. Переменной
внутреннего цикла является переменная J, соответствующая индексу
элементов массива Yj, цикл соответственно выполняется четыре раза.
Оператор условного перехода IF…THEN осуществляет проверку
условия, в зависимости от выполнения которого изменяется порядок
выполнения операторов программы. Оператор имеет два выхода - на случай
выполнения и невыполнения условия.
Операторы присваивания используются для присвоения переменным
значений (например, S = 0), а также для вычисления по формулам (например,
S = S+1).
Окно ввода InputBox (системная функция языка Visual Basic) позволяет
вводить значения переменных с клавиатуры по запросу. После запуска
программы на выполнение на экране монитора появляется окно ввода с
текстом подсказки на ввод данных (например, «Введите x(i)») и
соответствующим заголовком самого окна ввода (например, «Массив X»).
Следует ввести в соответствующее поле значение переменной (текущего
элемента массива). Строковая функция языка Visual Basic Val преобразует
текст в число (по умолчанию вводимое значение воспринимается как текст).
Оператор вывода PRINT осуществляет вывод значений переменных и
поясняющего текста на экранную форму создаваемого проекта.
Оператор - комментарий (обозначается ключевым словом REM или
символом ' - «апостроф») поясняет программный код или отдельные его
фрагменты.
Результаты работы программы

Вам также может понравиться