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

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

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

Введите количество

столбцов массива m: 2

æ1

1,1ö

Массив: ç

÷

ç

÷

è2

5 ø

3. Введите количество

 

3. 2-ая строка

строк массива n: 3

 

 

Введите количество

 

 

столбцов массива m: 4

 

 

æ1

0

- 4,6

2ö

ç

0

2

1,1

0

÷

Массив: ç

÷

ç

1

2

3

4

÷

è

ø

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

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

Результат:

1.

Введите размерность

1.

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

 

матрицы n: –7

 

 

2.

Введите размерность

2.

Максимальный элемент 11,6;

 

матрицы n: 6

 

матрица: 11,6 2 5 − 7,1 2 1

Матрица: (− 7,1 2 5 11,6 2 1)

12. Составьте программу на языке VBA, которая определяет наименьший

элемент в секторе над главной диагональю и наименьший элемент в секторе под главной диагональю, а затем заменяет наибольшим из них элементы главной диагонали квадратной матрицы An×n . Программа должна проверять правильность

введенных пользователем

данных

и, если

они

неверные (n ≤ 0), выдавать

сообщение об ошибке.

 

 

 

 

 

 

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

 

 

 

Результат:

 

1. Введите размерность

 

 

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

матрицы n: –2

 

 

 

 

 

 

2. Введите размерность

 

 

2. Наименьший элемент над главной

матрицы n: 3

 

 

 

диагональю равен –3.

 

 

 

 

 

Наименьший элемент под главной

æ 1

- 3

-1,2ö

диагональю равен - 4.

Матрица :

 

ç

- 4

25

5

÷

 

Матрица: ç

÷

- 4

- 3

-1,2

ç

1

6

2,6

÷

è

ø

- 4

- 4

5

 

 

 

 

 

 

 

 

 

 

1

6

- 4

13. Составьте программу на языке VBA, которая вычисляет среднее арифметическое ненулевых элементов в одномерной матрице A длинной n элементов. Программа должна проверять правильность введенных пользователем

31

данных и, если они неверные (n ≤ 0), выдавать сообщение об ошибке.

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

Результат:

1.

Введите размерность

1.

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

 

матрицы n: –2

 

 

2.

Введите размерность

2.

Среднее арифметическое ненулевых

 

матрицы n: 5

 

элементов равно 1,3250

 

Массив: (1,3 − 5 6 0

3)

 

14. Составьте программу на языке VBA, которая вычисляет сумму положительных элементов по строкам в двумерном массиве An×m . Программа

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

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

 

 

Результат:

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

 

 

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

строк массива n: 0

 

 

 

Введите количество

 

 

 

столбцов массива m: 4

 

 

2. Введите количество

 

 

2. Сумма положительных элементов:

строк массива n: 3

 

 

1-й строки равна 5

Введите количество

 

 

2-й строки равна 3,5

столбцов массива m: 4

 

3-й строки равна 0

æ- 9

-1,5

5

0 ö

ç

0,5

- 2

- 5

3

÷

Массив: ç

÷

ç

-1

0

- 6

- 4

÷

è

ø

15. Составьте программу на языке VBA, которая сортирует по убыванию одномерный массив размерностью n элементов. Программа должна проверять правильность введенных пользователем данных и, если они неверные (n ≤ 0), выдавать сообщение об ошибке.

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

Результат:

1.

Введите размерность

1.

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

 

массива n: –8

 

 

2.

Введите размерность

2.

Массив: 8,6 7 7 –6 –7,8

 

массива n: 5

 

 

 

Массив: (− 7,8 7 8,6

− 6 7)

 

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

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

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

Результат:

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

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

строк массива n: 2

 

Введите количество

 

столбцов массива m: 0

 

32

2. Введите количество

2. 1 – единичн(ый, ых) столбец(а, ов);

строк массива n: 2

0 – нулев(ая, ых) строк(а)

Введите количество

 

столбцов массива m: 3

 

æ1 2,2 1ö

Массив: çç ÷÷ è0 1 1ø

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

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

Результат:

1.

Введите размерность

1.

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

 

массива n: 0

 

 

2.

Введите размерность

2.

Массив: –3 0 8 4 –5 6,2 1

 

массива n: 7

 

 

 

Массив: (1 6,2 − 5 4 8 0

− 3)

 

18. Составьте программу на языке VBA, которая вычисляет сумму L положительных элементов квадратной матрицы An×n и заменяет отрицательные

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

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

 

 

Результат:

 

1. Введите размерность

 

 

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

матрицы n: –2

 

 

 

 

 

 

2. Введите размерность

 

 

2. Сумма положительных элементов

матрицы n: 3

 

 

 

равна 9.

 

æ1,5

0

- 4ö

Матрица :

1,5

0

9

ç

1

- 6

4,5

÷

Матрица: ç

÷

1

9

4,5

ç

0

2

- 3

÷

è

ø

0

2

- 3

 

 

 

 

 

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

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

Результат:

1.

Введите размерность

1.

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

 

матрицы n: –7

 

 

2.

Введите размерность

2. Равных элементов нет

 

матрицы n: 4

 

 

 

Матрица: (1 2 − 0,8

4)

 

3.

Введите размерность

3.

Чаще всего встречается элемент 2

33

матрицы n: 6

(3 раз(а))

Матрица: (1,9

2 2 1 2 1)

20. Составьте программу на языке VBA, которая определяет строку с

наименьшей суммой и переставляет ее с первой строкой в двумерном массиве An×m . Программа должна проверять правильность введенных пользователем

данных и, если они неверные (n ≤ 0, m ≤ 0), выдавать сообщение об ошибке.

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

 

 

Результат:

 

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

 

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

строк массива n: –1

 

 

 

 

 

Введите количество

 

 

 

 

 

столбцов массива m: 2

 

 

 

 

2. Введите количество

 

2. 2-ая строка с наименьшей суммой.

строк массива n: 3

 

Массив:

 

 

 

 

 

 

0

2

1

0

Введите количество

 

1

0

4,5

- 0,5

 

 

 

 

 

1

4

3

4

столбцов массива m: 4

 

 

 

 

æ1

0

4,5

- 0,5

ö

 

 

 

ç

0

2

1

0

÷

 

 

 

Массив: ç

÷

 

 

 

ç

1

4

3

4

÷

 

 

 

è

ø

 

 

 

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

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

Результат:

1.

Введите размерность

1.

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

 

массива n: –7

 

 

2.

Введите размерность

2.

В массиве 4 положительн(ый, ых)

 

массива n: 7

 

элемент(а, ов), 1 отрицательн(ый, ых)

 

Массив: (0 1,1 2 − 5 0

2 8)

элемент(а, ов), 2 нулевых(ой, ых)

 

 

 

элемент(а, ов)

22. Составьте программу на языке VBA, которая вычисляет минимальный элемент L главной диагонали квадратной матрицы An×n и заменяет элементы

побочной диагонали на L . Программа должна проверять правильность введенных

пользователем данных и, если

они неверные ( n ≤ 0), выдавать сообщение об

ошибке.

 

 

 

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

Результат:

1.

Введите размерность

1.

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

 

матрицы n: 0

 

 

2.

Введите размерность

2.

Минимальный элемент главной

 

матрицы n: 3

 

диагонали равен 2.

34

æ 7

0

- 4

ö

Матрица :

7

0

2

ç

 

7,7

÷

Матрица: ç11 5

÷

11

2

7,7

ç

3

2

÷

è 3

ø

2

3

2

 

 

 

 

23. Составьте программу на языке VBA, которая сортирует по возрастанию одномерный массив размерностью n элементов. Программа должна проверять правильность введенных пользователем данных и, если они неверные (n ≤ 0), выдавать сообщение об ошибке.

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

Результат:

1.

Введите размерность

1.

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

 

массива n: 0

 

 

2.

Введите размерность

2.

Массив: –2 0 1,7 7

 

массива n: 4

 

 

 

Массив: (1,7 0 7

− 2)

 

24. Составьте программу на языке VBA, которая выполняет перестановку нулевых строк в верхнюю часть двумерного массива An×m и вычисляет

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

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

 

 

Результат:

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

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

строк массива n: 0

 

 

Введите количество

 

столбцов массива m: 5

 

2. Введите количество

2. Нулевых строк нет

строк массива n: 2

 

 

Введите количество

 

столбцов массива m: 3

 

æ1

1,4

0

ö

 

Массив: ç

 

 

÷

 

ç

5

0

÷

 

è0

ø

 

3. Введите количество

3. Массив:

 

æ0

0

ö

 

ç

0

0

÷

строк массива n: 4

ç

÷

ç

1

3

÷

 

ç

÷

 

ç

1

1,5

÷

 

è

ø

Введите количество

Таких строк 2

столбцов массива m: 2

 

 

 

 

35

æ1

1,5ö

ç

0

0

÷

ç

÷

Массив: ç

1

3

÷

ç

÷

ç

0

0

÷

è

ø

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

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

 

Результат:

1.

Введите размерность

1.

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

 

матрицы n: –7

 

 

 

2.

Введите размерность

2.

Отрицательных элементов с четными

 

матрицы n: 3

 

 

 

индексами нет

 

Матрица: (1

2,1

− 5)

 

 

3.

Введите размерность

3.

Произведение отрицательных элементов

 

матрицы n: 6

 

 

 

с четными индексами равно 10

 

Матрица: (1

− 2

5 0,5 2

− 5)

 

26. Составьте программу на языке VBA, которая из двумерной матрицы An×m определяет строки, в которых отсутствуют отрицательные элементы.

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

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

 

Результат:

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

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

строк матрицы n: 0

 

Введите количество

 

столбцов матрицы m: 0

 

2. Введите количество

2. Таких строк нет

строк матрицы n: 2

 

Введите количество

 

столбцов матрицы m: 2

 

æ-1 - 3ö

 

Матрица: ç

÷

 

ç

÷

 

è 4

- 5ø

 

3. Введите количество

3. 1-я строка не содержит отрицательных

строк матрицы n: 4

 

элементов

Введите количество

3-я строка не содержит отрицательных

столбцов матрицы m: 2

элементов

æ

1

5

ö

 

ç

- 3,1

1

÷

 

ç

÷

 

Матрица: ç

0

0

÷

 

ç

÷

 

ç

-1

2

÷

 

è

ø

 

36

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

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

 

 

Результат:

 

1.

Введите размерность

 

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

 

 

массива n: 0

 

 

 

 

 

2.

Введите размерность

 

2. 2 пар(а, ы) знакочередующихся соседних

 

массива n: 6

 

 

 

элементов

 

 

Массив: (−1,1 0

1 − 2

− 2

5)

 

28. Составьте

программу

на

языке VBA, которая определяет

элемент

седловой точки и

его

индексы

в

двумерном массиве An×m (седловая

точка

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

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

Результат:

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

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

строк массива n: –1

 

Введите количество

 

столбцов массива m: 1

 

2. Введите количество

2. Седловой точки нет

строк массива n: 2

 

Введите количество

 

столбцов массива m: 2

 

æ1

2ö

 

Массив: ç

÷

 

ç

÷

 

è5

1ø

 

3. Введите количество

 

3. Седловая точка:

строк массива n: 3

 

 

3 (2 строка, 2 столбец)

Введите количество

 

 

столбцов массива m: 4

 

æ1

2,2

0

- 2

ö

ç

6

3

4

8

÷

Массив: ç

÷

ç

6

- 5

5

0

÷

è

ø

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

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

Результат:

1.

Введите размерность

1.

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

 

матрицы n: 0

 

 

2.

Введите размерность

2.

Отрицательных элементов нет

 

матрицы n: 2

 

 

37

Матрица: (2 1,5)

 

 

 

3. Введите размерность

 

3. Номер последнего отрицательного

матрицы n: 4

 

 

элемента равен 3

 

Матрица: (1,5

− 4 − 2,6

2)

 

 

30. Составьте

программу

на

языке VBA, которая

определяет

симметричность квадратной матрицы

An×n относительно главной

диагонали.

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

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

 

 

 

Результат:

1. Введите размерность

 

 

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

матрицы n: 0

 

 

 

 

 

2. Введите размерность

 

 

2. Матрица не симметрична относительно

матрицы n: 3

 

 

 

 

главной диагонали

æ 1

2

5

ö

 

 

ç

 

0

7,7

÷

 

 

Матрица: ç11

÷

 

 

ç

3

9

- 2

÷

 

 

è

ø

 

 

3. Введите размерность

 

 

3. Матрица симметрична относительно

матрицы n: 4

 

 

 

 

главной диагонали

æ 1

- 4 1,1

1ö

ç

- 4

 

0

0

5

÷

ç

 

÷

Матрица: ç

1,1

 

0

2

9

÷

ç

 

÷

ç

1

 

5

9

7

÷

è

 

ø

Часть 6. СОЗДАНИЕ ПРОГРАММ С ФУНКЦИЯМИ

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

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

üпередавать данные в функцию с помощью аргументов можно по ссылке

ипо значению;

üсреди выполняемых инструкций функции не обязательно должна быть инструкция присваивания значения функции (хотя рекомендуют ее использовать).

 

1. Напишите процедуру на языке VBA, которая вычисляет число сочетаний

Cmn =

n!

 

. Вычисление факториала оформить в виде функции (Факториалом

m!(n - m)!

 

 

числа n называется произведение целых чисел от 1 до n: n!=1×2×K×n . Например,

0!= 1, 1!=1, 3!= 6 ).

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

Результат:

n=4, m=2

Число сочетаний равно 6

2. Составьте процедуру на

языке VBA, которая вычисляет периметр

треугольника, построенного по трем точкам. Вычисление длины стороны оформить в виде функции.

Исходные данные: Результат:

38

A(0,0), B(3,0), C(0,−4) Периметр треугольника равен 12,00 (ед.)

3.

Напишите процедуру

на языке VBA для нахождения функции

f (x) =

 

sin2 (x)

 

. Вычисление sinn (x) оформить в виде функции.

sin3(x) +

2

 

 

 

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

Результат:

x=3

 

 

f (3) = 0,0099

4. Напишите процедуру на языке VBA для вычисления произведения Max( A) × Max(B) , где Max( A) (Max(B)) - максимальный элемент в одномерной

матрице A (B) длиной 6 элементов. Вычисление максимального элемента из матрицы оформить в виде функции.

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

 

 

Результат:

A = (1

0 − 6

4

1,4

3)

Произведение равно 8,2000

B = (−1

2,1 −1

− 4

1,1 0,6)

 

5.

Напишите

процедуру на

языке VBA для нахождения функции

f (a,b) =

 

 

ab

 

. Вычисление показательной функции оформить в виде функции.

4

a

 

b

 

 

+ 5

 

 

 

 

 

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

 

 

Результат:

a=2, b=3

 

 

 

f (2,3) = 0,05673758865

6. Напишите процедуру на языке VBA, которая определяет взаимное расположение 3-х прямых на плоскости заданных по точке и угловому коэффициенту (l1 : y = k × x + b). Определение взаимного расположение 2-х

прямых оформить в виде функции (должна возвращать True – прямые параллельные (совпадают), False – прямые пересекаются).

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

Результат:

Коэффициенты прямых:

1 и 2 параллельны, 1 и 3 пересекаются,

k1 =1,

b1 =1

 

2 и 3

пересекаются

k2 =1,

b2 = 5

 

 

 

k3 = 2,

b3 = −6

 

 

7.

Напишите

процедуру

на языке

VBA для нахождения функции

f (x) =

 

cos(x + 4)

 

. Вычисление cos(x + a) оформить в виде функции.

cos(x − 7) − 5

 

 

 

 

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

Результат:

x=2

 

 

 

f (2) = −0,203583866

8. Напишите процедуру на языке VBA для вычисления суммы определителей 2-х квадратных матриц 2-го порядка. Вычисление определителя 2- го порядка оформить в виде функции.

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

Результат:

æ 1

 

2ö

Сумма равна –7

A = ç

 

 

 

÷

ç

-1

 

0

÷

 

è

 

ø

 

æ1

5ö

 

 

B = ç

 

 

÷

 

 

ç

2

1

÷

 

 

è

ø

 

 

39

9. Напишите процедуру на языке VBA, которая определяет делимость нацело целых чисел из отрезка [a,b] (a b) на целое число L . Делимость нацело

двух целых чисел оформить в виде функции (должна возвращать True – при делимости нацело, False – в противном случае).

 

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

 

 

Результат:

 

 

 

 

1. [2,9]

 

 

 

 

1. Таких целых чисел из отрезка нет

 

 

 

L = 13

 

 

 

 

 

 

 

 

 

2. [1,9]

 

 

 

 

2. Делятся:

 

 

 

 

L = 3

 

 

 

 

3 6 9

 

 

 

 

10. Напишите

процедуру

на языке VBA, которая вычисляет значение

функции

f (n, m) =

n!

 

. Вычисление факториала

оформить в виде

функции

m!+1

 

 

 

 

 

 

 

 

 

(Факториалом числа n

называется

произведение

целых чисел от

1

до n:

n!= 1× 2×K× n . Например, 0!= 1, 1!= 1,

4!= 24 ).

 

 

 

 

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

 

 

Результат:

 

 

 

 

n=2, m=1

 

 

 

 

f (2,1) =1,00000

 

 

 

11. Напишите процедуру на языке VBA, которая определяет сократимость

дроби

a

(b ¹ 0). Вычисление

наибольшего общего делителя чисел

a

и b

 

b

 

 

 

 

 

 

 

 

 

оформить в виде функции.

 

 

 

 

 

 

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

 

 

Результат:

 

 

 

 

1. a=2, b=0

 

 

 

 

1. Неверно введено b

 

 

 

2. a=3, b=5

 

 

 

 

2. Дробь 3/5 не сократима

 

 

 

3. a=6, b=8

 

 

 

 

3. Дробь 6/8 сократима на 2

 

 

 

12. Напишите

процедуру

на

языке VBA, которая вычисляет

значение

функции f (x,n,m) = enx + emx

. Вычисление ekx

оформить в виде функции.

 

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

2

 

Результат:

 

 

 

 

 

 

 

 

 

 

x=1, n=2, m=3

 

 

 

 

f (1,2,3) = 0,0925611758

 

 

13. Составьте процедуру на языке VBA для вычисления радиуса описанной окружности треугольника построенного по трем точкам. Вычисление длины стороны оформить в виде функции.

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

Результат:

A(−4,0), B(0,0), C(0,−3)

Радиус треугольника равен 2,5000 (ед. кв.)

14. Напишите процедуру на языке VBA, которая определяет количество элементов одномерного массива A длиной 5 целых элементов, делящихся нацело на L, L +1, L + 2, L + 3, L + 4 (L > 0) . Вычисление количества элементов массива,

делящихся на k , оформить в виде функции.

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

Результат:

L =1

На 1 делятся 5 элемент(а, ов)

A = (9 2 7 4 5)

на 2 делятся 2 элемент(а, ов)

 

на 3 делятся 1 элемент(а, ов)

 

на 4 делятся 1 элемент(а, ов)

 

на 5 делятся 1 элемент(а, ов)

40