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

Сборник задач по VBA

.pdf
Скачиваний:
439
Добавлен:
09.04.2015
Размер:
379.19 Кб
Скачать

Часть 3. СОЗДАНИЕ ПРОГРАММ С РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРОЙ

Начальные сведения по решению задач данной части содержатся в части 4 учебно-методического пособия «Программирование на VBA».

Приступая к решению задач этого раздела, следует вспомнить, что:

üинструкция If…Then…Else используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

üвыбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия;

üусловие это выражение логического типа, которое может принимать одно из двух значений: True (истина условие выполняется) или False (ложь условие не выполняется);

üпри помощи логических операций And (логическое «И») и Or (логическое «Или») из простых условий можно строить сложные;

üинструкция Select…Case используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены).

1. Составьте блок-схему и программу на языке VBA, которая вычисляет частное от деления двух чисел. Программа должна проверять правильность введенных пользователем данных и, если они неверные (делитель равен нулю), выдавать сообщение об ошибке.

Исходные данные:

Результат:

1.

Делимое: 0,9

1.

Вы ошиблись. Делитель не должен быть

 

Делитель: 0

 

равен нулю.

2.

Делимое: 13,7

2.

Частное: 27,4

 

Делитель: 0,5

 

 

2. Составьте блок-схему и программу на языке VBA для проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер.

Исходные данные:

Результат:

1.

Архитектор Исаакиевского

1.

Вы ошиблись. Архитектор

 

собора:

 

Исаакиевского собора Огюст

 

1.

Доменико Трезини

 

Монферран

 

2.

Огюст Монферран

 

 

 

3.

Карл Росси

 

 

 

Введите номер правильного ответа: 3

 

 

2.

Архитектор Исаакиевского

2.

Верно

 

собора:

 

 

1.Доменико Трезини

2.Огюст Монферран

3.Карл Росси

Введите номер правильного ответа: 2

3. Составьте блок-схему и программу на языке VBA для решения квадратного уравнения a × x2 + b × x + c = 0. Программа должна проверять

11

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

Исходные данные:

Результат:

1. a=1, b=2, c=1

1. x1,2=1

2. a=1, b=0,5, c=0,5

2. x1=1, x2=0,5

3. a=1, b=1, c=3

3. Нет действительных корней

4. a=0, b=1, c=0,13

4. x=0,13

5. a=0, b=0, c=5

5. Неверные исходные данные

4. Составьте блок-схему и программу на языке VBA для вычисления площади кольца. Программа должна проверять правильность исходных данных.

Исходные данные:

Результат:

1.

Радиус кольца (см): 3,6

1.

Ошибка. Радиус отверстия не может быть

 

Радиус отверстия (см): 7

 

больше радиуса кольца.

2.

Радиус кольца (см): 4

2.

Площадь кольца: 30,6305283725 (кв. см)

 

Радиус отверстия (см): 2,5

 

 

5. Составьте блок-схему и программу на языке VBA для проверки принадлежности точки M (x0, y0, z0 ) плоскости Ax + By + Cz + D = 0 .

Исходные данные:

Результат:

1. Введите координату x0 : 1

1. Точка M (1,0,−1) принадлежит

Введите координату y0: 0

плоскости

Введите координату z0: –1

 

Введите A: 1

 

Введите B : 2

 

Введите C : –1

 

Введите D : –2

 

2. Введите координату x0 : –2

2. Точка M (−2,1,1) не принадлежит

Введите координату y0: 1

плоскости

Введите координату z0: 1

 

Введите A: –5

 

Введите B : 2

 

Введите C : –1

 

Введите D : 12

 

6. Составьте блок-схему и программу на языке VBA для проверки знания даты основания Санкт-Петербурга. В случае неверного ответа пользователя программа должна выводить правильный ответ.

Исходные данные:

Результат:

1.

Введите год основания

1.

Вы ошиблись, Санкт-Петербург был

 

Санкт-Петербурга: 1705

 

основан в 1703 году

2.

Введите год основания

2.

Верно

 

Санкт-Петербурга: 1703

 

 

7. Составьте блок-схему и программу на языке VBA, которая проверяет, является ли четным введенное пользователем целое число.

Исходные данные:

Результат:

1. Введите целое число: 23

1. Число 23 – нечетное

12

2. Введите целое число: 6

2. Число 6 – четное

8.Составьте блок-схему и программу на языке VBA, которая запрашивает

упользователя номер месяца и выводит соответствующее название времени года. В случае если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных».

Исходные данные:

Результат:

1.

Введите номер месяца

1. Зима

 

(число от 1 до 12): 11

 

 

2.

Введите номер месяца

2.

Ошибка ввода данных

 

(число от 1 до 12): 15

 

 

9. Составьте блок-схему и программу на языке VBA для нахождения

максимального из 3-х введенных чисел.

 

 

Исходные данные:

Результат:

1.

Введите первое число: 5

1.

Максимальное число: 19

 

Введите второе число: 3

 

 

 

Введите третье число: 19

 

 

2.

Введите первое число: 2

2.

Максимальное число: 5

 

Введите второе число: 5

 

 

 

Введите третье число: -5

 

 

10. Составьте блок-схему и программу на языке VBA, которая проверяет, делится ли на три целое число, введенное с клавиатуры.

Исходные данные:

Результат:

1.

Введите целое число: 451

1.

Число 451 на три не делится

2.

Введите целое число: 33

2.

Число 33 на три делится

11. Составьте блок-схему и программу на языке VBA, которая сравнивает два числа, введенных с клавиатуры. Программа должна указать, какое число больше или меньше, если числа равны, вывести соответствующее сообщение.

Исходные данные:

Результат:

1. Введите первое число: 35

1.

34 меньше 57

Введите второе число: 57

 

 

 

2. Введите первое число: 23

2.

23

больше 15

Введите второе число: 15

 

 

 

3. Введите первое число: 12

3.

12

равно 12

Введите второе число: 12

 

 

 

12. Составьте блок-схему и программу на языке VBA, которая запрашивает два числа, запрашивает ответ на умножение этих чисел, проверяет его и выводит сообщение «Правильно» или «Вы ошиблись» и правильный результат.

Исходные данные:

Результат:

1.

Введите первое число: 12

1.

Вы ошиблись. 12*2=24

 

Введите второе число: 2

 

 

 

Сколько будет 12*2: 25

 

 

2.

Введите первое число: –5,1

2.

Правильно

 

Введите второе число: 7

 

 

 

Сколько будет –5*7: –35,7

 

 

13. Составьте блок-схему и программу на языке VBA для определения стоимости разговора по телефону (25 руб. 1 мин) с учетом скидки 20%, предоставляемой по субботам и воскресеньям.

13

Исходные данные:

Результат:

1.

Длительность разговора

1.

Стоимость разговора: 250 руб.

 

(целое число мин): 10

 

 

 

День недели (1 – понедельник, … ,

 

 

7 – воскресенье): 2

 

 

2.

Длительность разговора

2.

Предоставляется скидка 20%

 

(целое число мин): 4

 

Стоимость разговора: 80 руб.

День недели (1 – понедельник, … ,

7воскресенье): 7

14.Составьте блок-схему и программу на языке VBA для проверки

направления ветвей параболы y = a × x2 + b × x + c .

Исходные данные:

Результат:

1.

Введите a : 3

1.

Ветви параболы направлены вверх

 

Введите b: 2

 

 

 

Введите c : 8

 

 

2.

Введите a : 0

2.

Это не парабола. Эта прямая.

 

Введите b: 2

 

 

 

Введите c : 8

 

 

15. Составьте

блок-схему и программу на языке VBA для вычисления

 

ì

 

 

 

 

 

 

ï- x, если x £ 5,

 

значений функции

ï

3

+ 5, если 5

< x £ 8,

y(x) = íx

 

 

ïsin(x) + x

, если x > 8.

 

ï

 

x

 

î

 

 

 

 

Исходные данные:

 

 

 

Результат:

1. Введите x : 0

 

 

 

1.

y(0) = 0

2. Введите x : 9

 

 

 

2.

y(9) = 1,04579

16. Составьте блок-схему и программу на языке VBA, которая проверяет, является ли введенные три числа сторонами треугольника.

Исходные данные:

Результат:

1.

Введите первую сторону: 1

1.

Треугольник со сторонами 1, 1, 1

 

Введите вторую сторону: 1

 

существует

 

Введите третью сторону: 1

 

 

2.

Введите первую сторону: 2

2.

Треугольник со сторонами 2, 1, 3 не

 

Введите вторую сторону: 1

 

существует

 

Введите третью сторону: 3

 

 

17. Составьте блок-схему и программу на языке VBA для нахождения

минимального из 3-х введенных чисел.

 

 

Исходные данные:

Результат:

1.

Введите первое число: –3

1.

Минимальоне число: –3

 

Введите второе число: 0

 

 

 

Введите третье число: 10

 

 

2.

Введите первое число: 20

2.

Минимальное число: 5

 

Введите второе число: 10

 

 

 

Введите третье число: 5

 

 

14

18.Составьте блок-схему и программу на языке VBA, которая запрашивает

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

Исходные данные:

Результат:

1. Введите номер дня

1.

Ошибка ввода данных

(число от 1 до 7): 0

 

 

2. Введите номер дня

2.

Воскресенье

(число от 1 до 7): 7

 

 

19. Составьте блок-схему и программу на языке VBA для проверки знания даты начала второй мировой войны. В случае неверного ответа пользователя программа должна выводить правильный ответ.

Исходные данные:

Результат:

1.

Введите год начало второй

1.

Вы ошиблись, вторая мировая война

 

мировой войны: 1941

 

началась в 1939 году

2.

Введите год начало второй

2.

Верно

 

мировой войны: 1939

 

 

20. Составьте блок-схему и программу на языке VBA, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным и выдает рекомендацию о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в сантиметрах) – 100.

Исходные данные:

Результат:

1.

Введите рост (см): 178

1.

Вам надо поправиться на 2,40 кг

 

Введите вес (кг): 75,6

 

 

2.

Введите рост (см): 173

2.

Вам надо похудеть на 1,21 кг

 

Введите вес (кг): 74,21

 

 

3.

Введите рост (см): 171

3.

У Вас оптимальный вес

 

Введите вес (кг): 71

 

 

21. Составьте блок-схему и программу на языке VBA, которая запрашивает два числа, запрашивает ответ на разность этих чисел, проверяет его и выводит сообщение «Правильно» или «Вы ошиблись» и правильный результат.

Исходные данные:

Результат:

1.

Введите первое число: 19,4

1.

Вы ошиблись. 19,4–2,1=17,3

 

Введите второе число: 2,1

 

 

 

Сколько будет 19,4–2,1: 12,3

 

 

2.

Введите первое число: –3

2.

Правильно

 

Введите второе число: 7,5

 

 

 

Сколько будет –3–7: –10,5

 

 

22. Составьте блок-схему и программу на языке VBA для проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа, а пользователь выбрать правильный ответ и ввести его номер.

Исходные данные:

Результат:

1. Невский проспект получил свое

1. Вы ошиблись. Правильный

название:

ответ: 2

1.По имени реки, на берегах которой расположен Санкт-Петербург

2.По имени близко расположенного монастыря

15

Александро-Невской лавры

3.В память о знаменитом полководце Александре Невском

Введите номер правильного ответа: 3 2. Невский проспект получил свое 2. Верно

название:

1.По имени реки, на берегах которой расположен Санкт-Петербург

2.По имени близко расположенного монастыря Александро-Невской лавры

3.В память о знаменитом полководце Александре Невском

Введите номер правильного ответа: 2

23. Составьте блок-схему и программу на языке VBA, которая проверяет, является ли введенные три числа углами треугольника (ввод в градусах).

Исходные данные:

Результат:

 

1.

Введите первый угол: –3

1. –3, 93, 90

не являются углами

 

Введите второй угол: 93

треугольника

 

Введите третий угол: 90

 

 

2.

Введите первый угол: 30

2. 30, 60, 90

являются углами треугольника

 

Введите второй угол: 60

 

 

 

Введите третий угол: 90

 

 

24. Составьте блок-схему и программу на языке VBA для проверки возрастания или убывания прямой ax + by = 1 (уравнение прямой в отрезках на осях).

Исходные данные:

Результат:

1.

Введите a : 3

1.

Прямая убывает

 

Введите b: 2

 

 

2.

Введите a : –1

2.

Прямая возрастает

 

Введите b: 2

 

 

25. Составьте

блок-схему

 

 

и программу на языке VBA для вычисления

 

 

ì

 

 

sin(x)

 

,если x < 0,

 

 

ï

 

 

 

 

 

ï

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ï

 

 

 

 

 

 

 

значений функции

f (x) = í

 

 

 

 

 

, если 0 £ x £ 3,

 

 

 

 

 

 

 

ïx + 3

 

 

 

 

 

 

ï

 

1

+ x3

 

,если x > 3.

 

 

ï

 

2

 

 

 

î

 

 

 

 

 

 

 

Исходные данные:

 

 

 

 

 

 

Результат:

1.

Введите x :–1

 

 

 

 

 

1.

f (−1) = 0,84147

2.

Введите x : 0

 

 

 

 

 

2.

f (0) = 0

3.

Введите x : 4

 

 

 

 

 

3.

f (4) = 64,500

26. Составьте блок-схему и программу на языке VBA, которая запрашивает два числа, запрашивает ответ на сумму этих чисел, проверяет его и выводит сообщение «Правильно» или «Вы ошиблись» и правильный результат.

16

Исходные данные:

Результат:

1.

Введите первое число: 10,1

1.

Вы ошиблись. 10,1+2,1=12,2

 

Введите второе число: 2,1

 

 

 

Сколько будет 10,1+2,1: 11,4

 

 

2.

Введите первое число: –8,5

2.

Правильно

 

Введите второе число: 9,5

 

 

 

Сколько будет –8,5+9,5: 1

 

 

27. Составьте блок-схему и

программу на языке VBA для проверки

попадания точки (x0

, y0 ) в эллипс

x2

+

y2

= 1.

 

 

a2

b2

 

 

 

 

 

 

 

 

 

 

Исходные данные:

 

 

Результат:

 

 

1. Введите a : 3

 

 

 

1. Точка (2,–2) лежит внутри эллипса

 

Введите b: 2

 

 

 

 

 

 

 

 

Введите x0 : 2

 

 

 

 

 

 

 

Введите

y0 : –2

 

 

 

 

 

 

 

2. Введите a : 1

 

 

 

2. Точка (–1,2) лежит на эллипсе

 

Введите b: 2

 

 

 

 

 

 

 

 

Введите x0 : –1

 

 

 

 

 

 

 

Введите

y0 : 2

 

 

 

 

 

 

 

3. Введите a : 5

 

 

 

3. Точка (6,0) лежит вне эллипса

 

Введите b: 2

 

 

 

 

 

 

 

 

Введите x0 : 6

 

 

 

 

 

 

 

Введите

y0 : 0

 

 

 

 

 

 

 

28. Составьте

блок-схему и программу на

языке VBA для проверки

взаимного расположения

двух

плоскостей

A1x + B1y + C1z + D1 = 0

и

A2x + B2 y + C2z + D2 = 0 в пространстве.

 

 

 

Исходные данные:

 

 

Результат:

 

 

1. Введите A1: 1

 

 

1. Плоскости пересекаются

 

Введите B1: 2

 

 

 

 

 

 

 

Введите C1: –1

 

 

 

 

 

 

 

Введите D1: 21

 

 

 

 

 

 

 

Введите A2 : 10

 

 

 

 

 

 

 

Введите B2 : 2

 

 

 

 

 

 

 

Введите C2 : –11

 

 

 

 

 

 

 

Введите D2: 21

 

 

 

 

 

 

 

2. Введите A1: 5

 

 

2. Плоскости совпадают

 

Введите B1: 2

 

 

 

 

 

 

 

Введите C1: –3

 

 

 

 

 

 

 

Введите D1: –1

 

 

 

 

 

 

 

Введите A2 : 10

Введите B2 : 4 Введите C2 : –6

17

Введите D2: –2

3. Введите A1: 5 3. Плоскости параллельны

Введите B1: 1

Введите C1: –3

Введите D1: –1

Введите A2 : –10

Введите B2 : –2

Введите C2 : 6

Введите D2: 5

29. Составьте блок-схему и программу на языке VBA для проверки знака

определителя второго порядка

a

b

.

 

c

d

 

Исходные данные:

 

 

Результат:

1. Введите a : 1

 

 

1. Определитель отрицательный

Введите b: 2

 

 

 

Введите c : 1

 

 

 

Введите d : –2

 

 

 

2. Введите a : 1

 

 

2. Определитель положительный

Введите b: –2

 

 

 

Введите c : 1

 

 

 

Введите d : 2

 

 

 

3. Введите a : 1

 

 

3. Определитель нулевой

Введите b: 0

 

 

 

Введите c : 1

 

 

 

Введите d : 0

 

 

 

30. Составьте блок-схему и программу на языке VBA для вычисления

ì

 

 

 

 

 

 

 

 

 

ï

 

 

x + 5

 

,если x < 1,

 

 

ï

 

 

 

 

 

ïcos(x)

 

 

значений функции g(x) = í

 

 

 

 

 

, если1 £ x < 4,

 

 

 

 

 

ïx

- 0,5

 

 

ï1

e

x

+ 2,если x

³ 4.

ï

 

 

 

 

 

 

 

 

î2

 

 

 

 

 

 

Исходные данные:

 

 

 

 

Результат:

1. Введите x : 0

 

 

 

 

1. g(0) = 5,0000

2. Введите x : 1

 

 

 

 

2.

g(1) = 1,0806

3. Введите x : 4

 

 

 

 

3.

g(4) = 29,2990

Часть 4. СОЗДАНИЕ ПРОГРАММ С ЦИКЛИЧЕСКОЙ СТРУКТУРОЙ

Начальные сведения по решению задач данной части содержатся в части 5 учебно-методического пособия «Программирование на VBA».

Приступая к решению задач этого раздела, следует вспомнить, что:

ü инструкция For…Next используется для организации циклов с

18

фиксированным, определяемым во время разработки программы, числом повторений;

üколичество повторений цикла For…Next определяется начальным и конечным значениями переменной-счетчика;

üчисло повторений инструкций циклов Do While, Do Until, Do…Loop While, Do…Loop Until определяется ходом выполнения программы;

üциклы Do While, Do Until это циклы с предусловием, т. е. инструкции тела цикла вообще могут быть не выполнены;

üциклы Do…Loop While, Do…Loop Until это циклы с постусловием, т. е. инструкции тела цикла будут выполнены хотя бы один раз.

1. Составьте блок-схему и программу на языке VBA, которая вычисляет сумму первых n целых положительных четных чисел. Количество суммируемых чисел должно вводиться во время работы программы. Программа должна проверять правильность введенных пользователем данных и, если они неверные ( n ≤ 0), выдавать сообщение об ошибке.

Исходные данные:

Результат:

1.

Введите n: 0

1.

Неверно введено n

2.

Введите n: 25

2.

Сумма первых 25 положительных четных

чисел равна 650

3. Введите n: 2 3. Сумма первых 2 положительных четных

чисел равна 6

2. Составьте блок-схему и программу на языке VBA, которая определяет

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

Исходные данные:

Результат:

1.

Введите целое число: 15

1.

Максимальное число: 23

 

Введите целое число: –1

 

 

 

Введите целое число: 23

 

 

 

Введите целое число: 7

 

 

 

Введите целое число: 0

 

 

2.

Введите целое число: 0

2.

Последовательность не введена

3. Составьте блок-схему и программу на языке VBA, которая вычисляет среднее арифметическое последовательности чисел, вводимых с клавиатуры.

Количество чисел последовательности должно вводиться во время работы программы. Программа должна проверять правильность введенных пользователем данных и, если они неверные ( n ≤ 0), выдавать сообщение об ошибке.

Исходные данные:

Результат:

1.

Введите n: –3

1.

Неверно введено n

2.

Введите n: 5

2.

Среднее арифметическое: 1,4400

Введите 1-е число: –1,6 Введите 2-е число: 3,4 Введите 3-е число: –3,3 Введите 4-е число: 4

19

Введите 5-е число: 4,7

4. Составьте блок-схему и программу на языке VBA, которая определяет, является ли последовательность убывающей (длина последовательности не ограничена). Признаком конца последовательности является ввод нуля.

Исходные данные:

Результат:

1. Введите число: 10

1. Последовательность не является

Введите число: –12,6

убывающей

Введите число: 1

 

Введите число: 0

 

2. Введите число: 7,9

2. Последовательность убывающая

Введите число: 6

 

Введите число: 5,5

 

Введите число: –7

 

Введите число: 0

 

5. Составьте блок-схему и программу на языке VBA, которая проверяет, является ли целое число, введенное пользователем, простым.

Исходные данные:

 

Результат:

1.

Введите число: 48

 

1.

48 – не простое число

2.

Введите число: 7

 

2.

7 – простое число

6.

Составьте блок-схему и программу на языке VBA, которая вычисляет

сумму

первых n членов ряда

1

+

2

3

+K, при

 

x

 

> 1. Количество

 

 

 

 

 

 

 

x

 

 

x2

 

x3

 

 

 

 

 

 

 

 

 

 

 

суммируемых членов ряда задается во время работы программы. Программа должна проверять правильность введенных пользователем данных и, если они неверные (n ≤ 0, x ≤ 1), выдавать сообщение об ошибке.

Исходные данные:

Результат:

1.

Введите n: 5

1.

Неверно введены данные

 

Введите x: 0,2

 

 

2.

Введите n: 10

2.

Сумма первых 10 членов ряда

 

Введите x: –3,5

 

равна 0,55998346956

7. Составьте блок-схему и программу на языке VBA, которая определяет, является ли последовательность знакопостоянной (длина последовательности не ограничена). Признаком конца последовательности является ввод нуля.

Исходные данные:

Результат:

1.

Введите число: 1,7

1.

Последовательность знакопеременная

 

Введите число: –10,6

 

 

 

Введите число: 1,9

 

 

 

Введите число: 1

 

 

 

Введите число: 0

 

 

2.

Введите число: 7,1

2.

Последовательность знакопостоянная

 

Введите число: 1,7

 

 

 

Введите число: 0

 

 

8. Составьте блок-схему и программу на языке VBA, которая вычисляет количество положительных чисел во вводимой последовательности из n целых чисел. Количество чисел последовательности должно вводиться во время работы

20