Главная | Обратная связь
МегаЛекции

Циклический алгоритм вычисления суммы и произведения элементов массива.




Задача. В массиве X состоящем из N чисел вычислить сумму элементов, значения которых принадлежат отрезку (a, b] и произведение положительных элементов, стоящих на чётных местах.

 

1. Составим фрагмент схемы алгоритма (в контрольной работе схему и программу составлять полностью!) (рис.3.4.)

2. Составляем таблицу соответствия переменных

 

В схеме В программе Тип Комментарий
массив X X Single Исходное данное
a a Single Исходное данное
b b Single Исходное данное
P P Single Результат
K K Integer Вспомогательная переменная
S S Single Результат
i i Integer Вспомогательная переменная
N N Integer Исходное данное

 

Чисел > 0 на четных местах нет
Да
S=0
i=1
S=S+Xi
i=i+1
Да
Нет
Нет
Да
i=2
P=P∙Xi K=K+1
Да
Нет
i=i+2
Нет
Да
Нет
P=1 K=0
Вывод K  
Да
Нет
Чисел Î (a,b] нет
Чисел >0 нет

Рис.3.4. Схема алгоритма примера 3.4.

 

3. Составляем фрагмент программы

…………………………………..

S =0

For i = 1 To n

If X(i) > a And X(i) <= b Then

S = S + X(i)

End If

Next i

P = 1: K = 0

For i = 2 To n Step 2

If X(i) > 0 Then

P = P * X(i)

K = K + 1

End If

Next i

'Вывод суммы

If S=0 Then

MsgBox "чисел, принадлежащих(" & a & ", " & b & "] Нет",, _

"Вывод сообщения"

Else

MsgBox "сумма чисел, принадлежащих (" & a & "," & b & ") = " & _

S,, "Вывод суммы"

End If

'Вывод произведения

If K = 0 Then

MsgBox "чисел >0 на чётных местах нет",, "Вывод сообщения"

Else

MsgBox "Произведение чисел >0 на чётных местах =" & P _

& Chr(13) & " их количество = " & K,, "Вывод произведения"

End If

4. Составляем тесты для проверки правильности работы программы.

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

а) При вычислении суммы:

· все числа массива Î(a,b];

· все числа массива Ï(a,b];

· часть чисел Î(a,b], а часть – нет.

б) При вычислении произведения:

· все числа, стоящие на четных местах >0;

· на четных местах нет чисел >0;

· на четных местах часть чисел >0, а часть нет.

Указанные ситуации можно создать, подбирая соответствующим образом числа массива и (или), изменяя значения a и b.

Тест№1.

N=6 a=0 b=10

X1 X2 X3 X4 X5 X6

Ожидаемые результаты: S=22 P=24 K=3.

Тест№2.

N=6 a=8 b=10

X1 X2 X3 X4 X5 X6
-2 -4 -6

Ожидаемые результаты: чисел Î(8,10] нет, чисел >0 на четных местах – нет.



Тест№3.

N=6 a=3 b=6

 

X1 X2 X3 X4 X5 X6
-4

 

Ожидаемые результаты: S=20 P=15 K=2.

Циклический алгоритм нахождения максимального элемента массива и его номера

Задача. Найти максимальный элемент массива X и поменять его местами с предыдущим.

Обозначим:

· максимальное значение – max,

· номер максимального элемента - n_max,

тогда номер предыдущего элемента будет - n_max-1.

1. Составляем фрагмент схемы алгоритма (рис.3.5.).

2. Составляем таблицу соответствия переменных

 

 

В схеме В программе Тип Комментарий
массив x x Single Исходное данное
max max Single Результат
n_max n_max Integer Результат
N N Integer Исходное данное
i i Integer Вспомогательная переменная

 

3. Составляем фрагмент программы

……………………………….

Cells(1, 1) = "Исходный массив"

For i = 1 To N

Cells(2, i) = x(i)

Next i

max = x(1)

n_max = 1

For i = 2 To N

If x(i) > max Then

max = x(i)

n_max = i

End If

Next i

'Перестановка

If n_max = 1 Then

MsgBox "Перестановки невозможна",, "Сообщение"

Else

R = x(n_max)

x(n_max) = x(n_max - 1)

x(n_max - 1) = R

End If

Cells(3, 1) = "Результирующий массив"

For i = 1 To N

Cells(4, i) = x(i)

Next i

…………………………………………….

 

 

Рис.3.5. Схема алгоритма примера 3.5.

 

4. Составляем тесты для отладки программы

Тест №1. Максимальный элемент стоит на произвольном месте

N=4 Исходный массив:

 

X1 X2 X3 X4
-7

Ожидаемые результаты:

max=12 n_max=3 Результирующий массив:

 

 

X1 X2 X3 X4
-7

Тест №2. Максимальный элемент стоит первым

N=3 Исходный массив:

X1 X2 X3

Ожидаемые результаты:

max=20 n_max=1 Перестановка невозможна, массив не изменяется





©2015- 2017 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов.