Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и основы программирования - копия.doc
Скачиваний:
23
Добавлен:
26.11.2019
Размер:
669.7 Кб
Скачать

Тест - проверка знаний по теме 7 (с решениями).

Задача 1. Построить блок-схему алгоритма обмена данными двух переменных A и B.

Решение. Алгоритм обмена данными двух переменных (например, A=2, B=3) имеет следующую стандартную для программирования схему:

- находится сумма значений переменных, которой присваивается имя одной из вводимых переменных, т. е. A:=A+B (2+3=5)

- находятся последовательно разности значений суммы и переменной, которым присваивается имя вычитаемой переменной, т. е. B:=A-B=A+B-B=A (5-3=2, а это было значение переменной A), A:=A-B=A+B-A=B(5-2=3, а это было значение переменной B).

Блок-схема данной задачи имеет линейный алгоритм, представленный на рисунке 13.

Рисунок 13 - Блок-схема линейного алгоритма задачи 1.

Задача 2. Построить блок-схему алгоритма Евклида – нахождение наибольшего общего делителя (НОД) двух натуральных чисел.

Решение. Данный алгоритм по Евклиду имеет следующее описание:

- строится цикл по проверке равенства двух натуральных чисел.

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

- цикл вычитания выполняется до тех пор, пока а не станет равным в. Полученное а является НОД по Евклиду. Блок-схема данного алгоритма представлена на рисунке 14.

Рисунок 14 - Блок-схема алгоритма задачи 2.

Проверим данный алгоритм по блок-схеме на примере, когда а=21, b=7.

Шаг 1. Вводим а=21 и b=7.

Шаг 2. Организуется цикл, т. к. а больше b.

Шаг 3. Присваиваем а=а-b=21-7=14.

Шаг 4. Проверка выхода из цикла - а больше b, выполняется, значит, возвращаемся к шагу 3.

Шаг 3. а=а-b =14-7=7, и переход к шагу 4.

Шаг 4. Проверка выхода из цикла - а равно b, условие не выполняется, значит, выходим из цикла и переходим к шагу 5.

Шаг 5. Присваиваем а значение НОД, т. е. 7, что соответствует правильному ответу в решении задачи.

Задача 3. Алгоритм, блок-схема которого приведена на рисунке 15, после ввода с клавиатуры трех чисел выводит на экран значения четырех чисел. В результате выполнения алгоритма после ввода переменных A, B и C были напечатаны числа - 10, -2, 6, неизвестное. Какое неизвестное число было напечатано последним?

Рисунок 15 - Блок-схема алгоритма задачи 3.

Решение. По блок-схеме алгоритма выполняются следующие действия:

Шаг 1. Ввод чисел A,B и C.

Шаг 2. Проверка условия, что последнее число С является отрицательным. Условие выполняется, т. к. в противном случае происходит окончание решения.

Шаг 3. Выполнение цикла по к (от 1 до 4). На экран выводится число С, равное -10.

Шаг 4. С присваивается значение С = -10*A - B.

Шаг 5. Выполнение второго оборота цикла по к. На экран выводится число С, равное -2.

Шаг 6. С присваивается значение С = -2*A -B.

Шаг 5. Выполнение третьего оборота цикла по к. На экран выводится число С, равное 6.

Шаг 6. С присваивается значение С = 6* A -B.

Шаг 7. Выполнение четвертого (последнего) оборота цикла по к. На экран выводится число С, которое является неизвестным. Данное неизвестное находим, определяя из системы двух уравнений:

1) -10*A – B= -2,

2) -2*A –B= 6.

Отсюда находим A=1, B=-8.

Значит, С=6*1- (-8)= 14.

Таким образом, на экране выводится число 14.

Шаг 8. С присваивается значение С = 14* 1 –(-8)=22. И на этом выполнение алгоритма заканчивается.

Задача 4. Построить блок-схему алгоритма нахождения суммы значений элементов двумерного массива (5, 6), которые не равны остатку от деления значения последнего элемента на значение первого.

Массивом называется совокупность группы переменных, объединенных общим именем.

Решение. Алгоритм данной задачи сводится к следующим действиям:

- организация цикла с параметром (например, I=6, J=5) для ввода значений элементов массива, обозначенных как A[I, J],

- присваивание нулевого значения сумме значений S:=0, целесообразно также присвоить значение остатку от деления значения последнего элемента на первый, например ost:= A[6,5] MOD A[1,1], для удобства сравнения по заданному условию.

- организация того же цикла с параметром для проверки условия неравенства введенного элемента остатку от деления значения последнего элемента на первый – A[I,J] <> ost. Здесь же необходимо найти получаемую сумму как S:= S + A[I,J],

- вывод полученного результата на экран (при этом можно организовать проверку условия существования требуемых элементов – если S:=0, то вывод на экран сообщения: «Таких элементов нет»).

Блок-схема данного алгоритма представлена на рисунке 16.

Рисунок 16 - Блок-схема алгоритма задачи 4.

Задача 5. Построить блок-схему нахождения максимального значения последнего элемента одномерного массива, у которого значение каждого члена равно остатку от деления трехкратной размерности массива на число 5.

Решение. Алгоритм данной задачи, в общем случае, сводится к следующим действиям:

- организация цикла с параметром (I=N) для ввода значений элементов массива, обозначенных как A[I]= 3*I MOD 5,

- перед выполнением второго цикла первому элементу массива A[1] присваивается значение MAX, т. е. MAX:= A[1].

- организация цикла с параметром (I=N) и сравнение каждого последующего элемента массива с предыдущим. При этом в начале цикла значение первого элемента сравнивается с самим собой.

Далее в цикле? если A[I+1] больше или равно A[I], то значение присваивается MAX:= A[I+1], иначе MAX:= A[I]. Для определения индекса последнего элемента используется переменная k, у которой, если MAX:= A[I+1], то k:= i+1, если MAX:= A[I] - то k:= i.

- вывод на экран найденного максимального значения элемента массива, т. е. “ k = ”, максимальное значение MAX.

Блок-схема алгоритма задачи 5 представлена на рис 17.

Рисунок 17 - Блок-схема алгоритма задачи 5.

Для проверки решения задачи по алгоритму, положим I, равным, например, 10. Тогда значения 10 элементов по представленной блок-схеме (соответственно условию A[I]= 3*I MOD 5) показаны в таблице 2.

Таблица 2. элементы одномерного массива задачи 5.

A[1]

A[2]

A[3]

A[4]

A[5]

A[6]

A[7]

A[8]

A[9]

A[10]

2

1

4

2

0

3

1

4

2

0

Из таблицы видно, что максимальное значение, равное 4, имеют два элемента массива – 3-ий и 8-ой.

Таким образом, после выполнения цикла ввода элементов массива, выполняются следующие действия:

Шаг 1. Присваивается переменной MAX значение A[1], т. е. MAX:= A[1]=2. Шаг 2. Выполнение второго цикла: значение A[1] сравнивается с MAX, а т. к. A[1]= MAX, то MAX:= MAX=2 и к:=1.

Шаг 3. Значение A[2] сравнивается с MAX, а т. к. A[2]= 1< 2, то MAX:= MAX=2 и к:=1.

Шаг 4. Значение A[3] сравнивается с MAX, а т. к. A[3]= 4> 2, то MAX:= A[3]= 4 и к:=3.

Шаг 5. Значение A[4] сравнивается с MAX, а т. к. A[4]= 2< 4, то MAX:= A[3]= 4 и к:=3.

Шаг 6. Значение A[5] сравнивается с MAX, а т. к. A[5]= 0<4, то MAX:= A[3]= 4 и к:=3.

Шаг 7. Значение A[6] сравнивается с MAX, а т. к. A[6]= 3<4, то MAX:= A[3]= 4 и к:=3.

Шаг 8. Значение A[7] сравнивается с MAX, а т. к. A[7]= 1<4, то MAX:= A[3]= 4 и к:=3.

Шаг 9. Значение A[8] сравнивается с MAX, а т. к. A[8]= 4=4, то MAX:= A[8]= 4 и к:=8.

Шаг 10. Значение A[9] сравнивается с MAX, а т. к. A[9]= 2<4, то MAX:= A[8]= 4 и к:=8.

Шаг 11. Значение A[10] сравнивается с MAX, а т. к. A[10]= 0<4, то MAX:= A[8]= 4 и к:=8.

Шаг 12. На экран выводится сообщение, что 8-ой элемент массива имеет максимальное значение, равное 4.

Задача 6. По представленной на рисунке блок-схеме определить значение выводимой на экран переменной S.

Решение. Для решения данной задачи целесообразно построить вычислительную таблицу 3, в которую необходимо занести все промежуточные вычисления.

Рисунок 18 - Блок-схема алгоритма задачи 6.

Таблица 3 – вычислительная таблица примера 6.

Вводимые величины M=6, a:=10, b:=5, c:=2, S:=3

Шаг 1

Значения

Условие выполнения цикла

c<M

c=2, M=6

True

a:=b, b:=c, c:=a+b, S:=S+c, c:=c-3

False

S:=S-c

Выполняемые действия и результаты a:=5, b:=2, c:=5+2=7, S:=3+7=10, c:=7-3=4

Шаг 2

Значения

Условие выполнения цикла c<M

c=4, M=6

True

a:=b, b:=c, c:=a+b, S:=S+c, c:=c-3

False

S:=S-c

Выполняемые действия и результаты a:=2, b:=4, c:=2+4=6, S:=10+6=16, c:=6-3=3

Шаг 3

Значения

Условие выполнения цикла c<M

c=3, M=6

True

a:= b, b:=c, c:=a+b, S:=S+c, c:=c-3

False

S:=S-c

Выполняемые действия и результаты a:= 4, b:=3,

c:=4+3=7, S:=16+7=23, c:=7-3=4

Шаг 4

Значения

Условие выполнения цикла c<M

c=4, M=6

True

a:=b, b:=c, c:=a+b, S:=S+c, c:=c-3

False

S:=S-c

Выполняемые действия и результаты a:=3, b:=4, c:=3+4 =7, S:=23+7=30, c:=7-3=4

Шаг 5

Значения

Условие выполнения цикла c<M

c=4, M=6

True a:=b, b:=c, c:=a+b, S:=S+c, c:=c-3

Выполняемые действия и результаты a:=4, b:=4, c:=4+4=8, S:=30+8=38, c:=8-3=5

Шаг 6

Значения

Условие выполнения цикла c<M

c=5, M=6

True a:=b, b:=c, c:=a+b, S:=S+c, c:=c-3

Выполняемые действия и результаты a:=4, b:=5, c:=4+5=9, S:=38+9=47, c:=9-3=6

Шаг 7

Значения

Условие выполнения цикла c<M

c=6, M=6

False S:=S-c

Выполняемые действия и результаты S:=S-c=47-6=41

Выводимые результаты S=41

Ответ: S=41.

Задача 7. Представление алгебраических выражений при написании программ. Представить следующую алгебраическую формулу:

Решение. Для представления формулы необходимо применять следующие правила:

- алгебраические выражения записываются одной строкой,

- операция деления представляется знаком слеш - /,

- для указания последовательности выполнения действий используются круглые скобки,

- некоторые математические операции заменяются стандартными функциями.

Учитывая данные правила, формула заменяется следующими последовательностями:

y = (действие 1)/(действие 2) – действие 3,

где действие 1 – числитель дроби,

действие 2 – знаменатель дроби,

действие 3 – извлечение квадратного корня.

Действие 1 представляет собой сложение выражения под квадратным корнем, косинуса некоторого выражения и модуля (абсолютной величины) некоторого степенного выражения – полинома.

Представляем: как выражение sqr(45*x^5),

cos(x+0,5) как cos(x+0.5),

как выражение abs(x^3 +7*x^2-1).

Таким образом, действие 1 заменяется выражением:

sqr(45*x^5) + cos(x+0.5) – abs(x^3 +7*x^2-1).

Действие 2 представляет собой корень 4-ой степени некоторого выражения. Данный корень можно представить как возведение в ¼ степень выражения, в котором последовательно заменяем:

6x3 как 6*x^3,

sinx как sin(x),

как exp(x+1).

Таким образом, действие 2 представляет собой выражение:

(6*x^3 – sin(x) – exp(x+1)^(1/4)

Действие 3 представляет собой квадратный корень степенного выражения и представляется как:

sqr(x^3 + 11).

И, окончательно, представленная формула преобразуется к виду:

y = (sqr(45*x^5) + cos(x+0.5) – abs(x^3 +7*x^2-1))/( (6*x^3 – sin(x) – exp(x+1)^(1/4)) - sqr(x^3 + 11).