Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

6378

.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
436.21 Кб
Скачать

Окончание табл. 4.1

1

2

3

8Z(30) Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z

9N(50) Определить сумму элементов массива N, кратных трем

10X(N) Вычислить сумму и количество элементов массива Х

11A(N) Найти среднее геометрическое элементов массива А

12X(N) Переписать в массив Y в порядке возрастания положительные элементы массива Х

13

X(N)

Переписать подряд в массив Y положительные и в массив

 

 

Z отрицательные элементы массива Х

14B(K) Определить максимальный элемент массива В и его порядковый номер

15C(K) Определить минимальный элемент массива С и его порядковый номер

2.Проверить правильность выполнения программы с помощью тестового варианта.

Пример выполнения работы

Вычислить на ЭВМ наибольший элемент массива x1, x2,..., xn и

его порядковый номер; n 30. Проверить правильность программы на тесте при n = 3 и следующих элементах массива (1.5, 4.3, 2.4). При выполнении задания необходимо использовать прием нахождения наибольшего. Для этого перед циклом следует задать начальное значение наибольшего, равное первому элементу массива, а в цикле сравнивать наибольший с текущим элементом массива; в том случае, если текущий элемент больше наибольшего из предыдущих, то считать его наибольшим. Для нахождения порядкового номера наибольшего элемента массива необходимо перед циклом задать его начальное значение, равное 1, а в цикле всякий раз, когда текущий элемент массива больше наибольшего, считать номером наибольшего номер текущего элемента массива.

Программа состоит из двух процедур. Первая процедура организует ввод массива из текстовой строки, вторая обрабатывает массив.

Для оформления интерфейса создадим форму пользователя:

заходим в редактор VBA (Alt+F11);

в меню выбираем команду Insert→UserForm;

20

изменяем название формы Caption (в окне Properties UserForm1) на «Иванов И.И. гр.101317 Лабораторная работа № 4»;

вставляем в форму из панели инструментов Toolbox/Controls

следующие объекты: 4 Label, 4 TextBox и 2 CommandButton;

располагаем объекты и изменяем заголовки Label и CommandButton как показано на рисунке 4.1.

Рисунок 4.1 – Вид интерфейса программы

Двойным щелчком по кнопке «Задать массив» заходим в окно редактирования кода программы. В открывшемся окне набираем код процедур, алгоритмыкоторыхпредставлены нарисунках 4.2 и4.3.

21

1

 

 

 

 

начало

 

 

2

 

 

ввод элементов массива в строку

 

St

 

через пробел

 

 

 

3

 

 

вставка пробелов в начало

St="

"+Trim(St)+"

"

и конец строки

4

 

 

обнуление счетчика, установка

 

i=0, jn=1

 

позиции начала числа

 

 

 

5

 

 

определение конечной

jk=InStr(jn+1,St,"

")

позиции числа

 

 

 

условие продолжения

 

 

 

цикла

6

jn<jk

нет

 

 

 

 

 

да

 

изменение значения

7

 

счетчика элементов

 

 

 

 

i=i+1

 

 

 

 

 

запись в i элемент числа, находящегося

8

 

 

между jn и jk позициями в строке

M(i)=Val(Mid(St,jn,(jk-jn)))

 

9

 

 

переход к следующему числу

 

jn=jk

 

 

10

 

 

определение конечной позиции

jk=InStr(jn+1,St,"

")

следующего числа

11

 

 

вывод числа элементов в массиве

 

 

 

 

i

 

 

 

конец

 

 

Рисунок 4.2 – Схема алгоритма процедуры ввода массива

22

начало

1

Mmax=M(1)

2

IMmax=1

3

j=2

4

j<i

да

5

Mmax<M(j)

6да

Mmax=M(j)

7

IMmax=j

задание начального значения максимального значения

задание номера максимального значения

задание номера элемента для проверки в цикле

условие продолжения цикла

нет

условие выбора большего элемента

нет

присваивание нового значения максимального элемента

присваивание номера максимального элемента

 

 

8

 

 

 

 

 

изменение параметра условия

 

 

 

 

j=j+1

 

 

 

 

 

 

 

 

цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

вывод значения максимального элемента

Mmax, IMmax

и его номера

конец

Рисунок 4.3 – Схема алгоритма нахождения наибольшего члена массива и его порядкового номера

23

Код программы реализующей схемы алгоритмов, представленных на рисунках 4.2 и 4.3, имеет вид:

Const N = 10

Dim M(1 To N) As Double, St As String, Mmax As Double, IMmax As Integer

Dim i As Integer, j As Integer, jn As Integer, jk As Integer

Private Sub CommandButton1_Click() Label1.Caption = "Исходный массив" St = TextBox1.Text

St = " " + Trim(St) + " " i = 0

jn = 1

jk = InStr(jn + 1, St, " ")

While jn < jk i = i + 1

M(i) = Val(Mid(St, jn, (jk - jn))) jn = jk

jk = InStr(jn + 1, St, " ") Wend

TextBox2.Text = Str(i) End Sub

Private Sub CommandButton2_Click()

Mmax = M(1)

IMmax = 1

For j = 2 To i

If M(j) > Mmax Then

Mmax = M(j)

IMmax = j

End If

Next j

TextBox3.Text = Str(Mmax)

TextBox4.Text = Str(IMmax)

End Sub

24

Лабораторная работа № 5

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ СО СТРУКТУРОЙ ВЛОЖЕННЫХ ЦИКЛОВ

Цель работы: овладеть навыками алгоритмизации и программирования вычислительных структур с вложенными циклами.

Задания для самостоятельной подготовки

1. Изучить:

организацию вычислительных структурсвложенными циклами;

возможности языка программирования по организации таких структур;

прием программирования для вычисления определенного интеграла с заданной точностью.

2.Разработать алгоритм решения задачи в соответствии с зада-

нием.

3.Создать форму с соответствующими полями.

4.Составить программу решения задачи.

Задание к работе

Вычислить на ЭВМ с заданной точностью значение определенного интеграла

b

s f x dx,

a

приведенного в таблице 3.1. Исходными данными для решения счи-

тать значения отрезка интегрирования ,b , точность вычисления и метод численного решения. Включить в программу вычисление точного значения интеграла по первообразной функции из таблицы 3.2, оценить относительную погрешность метода.

Пример выполнения работы

Вычислить на ЭВМ методом трапеций значение интеграла

b

sin2 x

 

 

s

 

dx,

для a = 0, b = π,

1 cos x

a

 

 

25

с точностью = 10–4. Для контроля вычислить точное значение интеграла и оценить абсолютную погрешность вычисления.

Для оформления интерфейса создадим форму пользователя с набором элементов, как показано на рисунке 5.1.

Рисунок 5.1 – Вид интерфейса программы

Двойным щелчком по кнопке «Расчет» заходим в окно редактирования кода программы. В открывшемся окне набираем код программы, алгоритм которой представлен на рисунке 5.2.

26

начало

 

1

1

a,b,n,eps

16

s,st,delta,it

2

st=F(b)-F(a)

конец

3

it=0

4 dx=(b-a)/2

5 s=(fa+fb)/2

6

x=a, i=1

условие внутреннего цикла

7

i<=n

нет

 

 

8да x=x+dx

9 s=s+f(x)

10

i=i+1

11 s=s*dx

 

 

 

 

 

 

 

вычисление погрешности

12

 

 

 

 

 

 

delta=(s-st)/st

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

удвоение числа разбиения

 

 

 

 

n=n*2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

it=it+1

 

 

 

 

 

 

 

 

 

 

условие внешнего цикла

 

 

15 delta<eps

 

 

 

 

 

 

 

1

 

 

 

Рисунок 5.2 – Схема алгоритма программы

27

Программа, реализованная в соответствии с алгоритмом (рисунок 5.2), имеет вид:

Dim A As Double, B As Double, N As Integer, S As Double, St As Double, delta As Double, dX As Double

Dim X As Double, I As Integer, eps As Double, It As Integer

Private Sub CommandButton1_Click() A = Val(TextBox1.Text)

B = Val(TextBox2.Text)

N = Val(TextBox3.Text) eps = Val(TextBox4.Text)

St = (B - Sin(B)) - (A - Sin(A)) It = 0

Do

dX = (B - A) / N

S = (((Sin(A)) ^ 2 / (1 + Cos(A))) + ((Sin(B)) ^ 2 / (1 + Cos(B)))) / 2 X = A

For I = 2 To N - 1

X = X + dX

S = S + (Sin(X)) ^ 2 / (1 + Cos(X))

Next I

S = S * dX

delta = Abs((St - S) / St) N = N * 2

It = It + 1

Loop While delta > eps

TextBox5.Text = Str(S)

TextBox6.Text = Str(St)

TextBox7.Text = Left(Str(delta), 5) + Right(Str(delta), 4)

TextBox8.Text = Str(It)

End Sub

28

Лабораторная работа № 6

ОБРАБОТКА ДВУМЕРНЫХ МАССИВОВ

Цель работы: овладеть навыками алгоритмизации и программирования структур с вложенными циклами, навыками использования приемов программирования во вложенных циклах, способами ввода и вывода двумерных массивов.

Задания для самостоятельной подготовки

1. Изучить:

правила организации вложенного цикла с учетом порядка перебора элементов двумерного массива;

правила использования приемов программирования в структурах с вложенными циклами;

способы ввода и вывода матриц, имеющиеся в языке программирования.

2.Разработать алгоритм решения в соответствии с заданием.

3.Создать форму с необходимыми объектами.

4.Составить программу решения задачи.

5.Подготовитьтестовый вариантпрограммыиисходных данных.

Задания к работе

1.Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в таблице 6.1. Результаты и исходную матрицу представить в общепринятом виде.

2.Проверить правильность выполнения программы с помощью тестового варианта.

Таблица 6.1

Вари-

Имя

 

Условия

матрицы

Действия

ант

и размеры

 

и ограничения

1

2

3

4

 

 

Вычислить и запомнить сумму и число по-

 

1

А(10,15)

ложительных элементов каждого столбца

 

 

 

матрицы. Результаты вывести в виде двух

 

 

 

строк

 

 

А(N,M)

Вычислить и запомнить суммы и числа эле-

N 20

2

ментов каждой строки матрицы. Результаты

M 15

 

 

вывести в виде двух столбцов

 

29

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