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

2.3. Производная алгоритмическая структура Поиск минимума

Используется для нахождения минимального элемента и его местоположения. Условие поиска минимума определяется выражением:

<Элемент массива> < <Ключ поиска>

Особенности алгоритма.

Аналогичны производной алгоритмической структуре Поиск максимума, но Ключу поиска присваивается начальное значение, которое может быть:

 значением любого элемента массива;

 числом, намного большим любого из возможных значений, которые могут принимать элементы массива.

После окончания циклического вычислительного процесса значение Ключа поиска равно минимальному значению элемента массива, а дополнительные переменные (переменная) хранят значения, определяющие местоположение этого элемента в массиве.

Пример 7.

Разработать информационную технологию, позволяющую определить местоположение элемента матрицы А произвольной размерности mn, имеющего минимальное значение. При наличии нескольких одинаковых минимальных элементов выбрать элемент, имеющий наибольшие индексы.

Входные данные: m – целое число;

n – целое число;

A=[aij], , – массив целых чисел.

Выходные данные: min – минимальное значение элемента массива, целое число;

k и q значения индексов, определяющих его местоположение, целые числа.

Математическая модель:

min = a11, k = 1, q = 1;

для i = 1.. m, j = 1.. n,

если aij ≤ min, то min = aij, k = i, q = j

Схема алгоритма:

Код приложения:

Private Sub Command1_Click()

Dim m As Integer, i As Integer, j As Integer, k As Integer, q As Integer

Dim a() As Integer, min As Integer

m=InputBox(“Количество строк матрицы=”)

n =InputBox(“Количество столбцов матрицы=”)

Redim a(1 To m,1 To n)

For i=1 To m

For j=1 To n

a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)

Next

Next

Print “Исходный массив

For i=1 To m

Print

For j=1 To n

Print a(i,j);

Next

Next

min = a(1,1)

k=1: q=1

For i=1 To m

For j=1 To n

If a(i,j)<=min then

min = a(i,j)

k=i: q=j

End If

Next

Next

MsgBox “ Минимум = ” & min & Сhr(10) & ”Индекс i=” & i & _

Индекс j=” & j

End Sub

3. Вычислительный процесс накопление

Служит для накопления сумм и произведений значений элементов массива, а также подсчета количества элементов в массиве, значения которых удовлетворяют заданному условию.

Различают следующие производные алгоритмические структуры:

 накопление суммы (Cумма);

 накопление произведения (Произведение);

 подсчет количества (Счётчик).

3.1. Производная алгоритмическая структура Cумма

Производная алгоритмическая структура Cумма служит для вычисления различных сумм.

Особенности алгоритма.

1. Вводится дополнительная переменная, которая служит для хранения значений сумм элементов массива.

2. Дополнительной переменной присваивается начальное значение, равное 0.

3. Определяется тип вычислительного процесса:

 цикл с параметром, если задана размерность массива или ее можно определить перед началом вычислительного процесса;

 итерационный цикл, если накопление суммы заканчивается при достижении заданной точности.

4. Телом цикла служит структура Следование, представленная итерационной формулой:

<Доп. переменная>=<Доп. переменная > + <Элемент массива>

5. После окончания вычислительного процесса дополнительная переменная хранит искомую сумму.

Пример 8.

Разработать информационную технологию, позволяющую вычислить сумму значений элементов первой и последней строк матрицы А произвольной размерности m×n.

Входные данные: m – целое число;

n – целое число;

A=[aij], , – массив вещественных чисел.

Выходные данные:

s – искомая сумма, вещественное число.

Математическая модель:

Схема алгоритма:

Код приложения:

Option Base 1

Private Sub Command1_Click()

Dim m As Integer, n As Integer

Dim s As Single, a() As Single, i As Integer, j As Integer

m=InputBox(“Введите количество строк матрицы”)

n=InputBox(“Введите количество столбцов матрицы”)

Redim a(m,n)

For i=1 To m

For j=1 To n

a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)

Next j

Next i

s=0

For j=1 To n

s=s+a(1,j)+a(m,j)

Next j

Print “Исходная матрица”

For i=1 To m

Print

For j=1 To n

Print Format(a(i,j),”0.00”);

Next

Next

Msgbox “Сумма первой и последней строк матрицы равна ” & s

End Sub

Аналогичный алгоритм может быть использован для накопления суммы степенного ряда. В этом случае дополнительной переменной присваивается значение, равное первому члену степенного ряда.

Пример 9.

Разработать информационную технологию, позволяющую вычислить сумму степенного ряда: 0,5+х+х2/2+х3/3+… Количество членов степенного ряда, для которых необходимо вычислить сумму, задаётся вводом.

Входные данные: k – количество членов ряда, целое число;

х – вещественное число.

Выходные данные: s – значение искомой суммы, вещественное число.

Математическая модель:

Схема алгоритма:

Код приложения:

Private Sub Command1_Click()

Dim x As Single, k As Byte, s As Double, i As Integer

k=InputBox(“Введите количество членов степенного ряда”)

x=InputBox(“Введите значение х”)

s=0.5

For i=1 To k

s=s+x^ i/i

Next i

MsgBox “Сумма членов степенного ряда =” & s

End Sub