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

Задачник VBA_ II

.pdf
Скачиваний:
302
Добавлен:
10.06.2015
Размер:
1.17 Mб
Скачать

41

Задание 6 (повышенной сложности). Даны тексты главной программы и вызываемой процедуры. Как будет выглядеть окно сообщений в результате

работы главной программы?

 

Текст программы:

Текст вызываемой процедуры:

Задание 7. В каком месте приведенного листа Excel и какие результаты появятся после выполнения указанной программы?

Задание 8. В каком месте приведенного листа Excel и какие результаты появятся после выполнения указанной программы?

42

Задание 9. На листе Excel подготовлена таблица (рис. 6). Какую информацию вычисляет программа, представленная в два столбца, какие данные появятся на листе в результате ее работы?

Текст программы:

Рис. 6. Ведомость на премию

Задание 10. Как будет выглядеть окно сообщений в результате работы представленной программы?

Текст программы:

43

6.3. Задания по разработке программ для задач с одномерными массивами

1. Дано целое число N (> 2). Сформировать и вывести целочисленный массив размера N, содержащий N первых элементов последовательности чи-

сел Фибоначчи FК:

F1 = 1, F2 = 1, FК = FК-2+ FК-1, K = 3, 4, … .

2.Даны целые числа N (> 2), A и B. Сформировать и вывести целочисленный массив размера N, первый элемент которого равен A, второй равен B, а каждый последующий элемент равен сумме всех предыдущих.

3.Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве нечетные числа в порядке возрастания их индексов, а так-же их количество K.

4.Дан массив A размера N и целое число K (1 ≤ K N). Вывести

элементы массива с порядковыми номерами, кратными K: AК, A2K, A3K, … . Условный оператор не использовать.

5.Дан целочисленный массив A размера 10. Вывести порядковый но-

мер последнего из тех его элементов AК, которые удовлетворяют двойному неравенству A1 < AK < A10. Если таких элементов нет, то вывести 0.

6.Дан массив размера N и целые числа K и L (1 ≤ K L N). Найти сумму элементов массива с номерами от K до L включительно.

7.Дан массив размера N и целые числа K и L (1 ≤ K L N). Найти среднее арифметическое элементов массива с номерами от K до L включительно.

44

8. Дан целочисленный массив размера N, не содержащий одинаковых чисел. Проверить, образуют ли его элементы арифметическую прогрессию. Если образуют, то вывести разность прогрессии, если нет – вывести 0.

9.Дан массив ненулевых целых чисел размера N. Проверить, образуют ли его элементы геометрическую прогрессию. Если образуют, то вывести знаменатель прогрессии, если нет – вывести 0.

10.Дано число R и массив A размера N. Найти элемент массива, кото-

рый наиболее близок к числу R (то есть такой элемент AК, для которого величина |AK R| является минимальной).

11.Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен максимальному из элементов массивов A и B с тем же индексом.

12.Дан массив A размера N. Сформировать новый массив B того же

размера по следующему правилу: элемент BК равен сумме элементов массива A с номерами от 1 до K.

13.Дан массив A размера N. Сформировать новый массив B того же

размера по следующему правилу: элемент BК равен среднему арифметическому элементов массива A с номерами от K до N.

14.Дан целочисленный массив размера N. Увеличить все нечетные числа, содержащиеся в массиве, на исходное значение последнего нечетного числа. Если нечетные числа в массиве отсутствуют, то оставить массив без изменений.

15.Дан массив размера N (N – четное число). Поменять местами его первый элемент со вторым, третий – с четвертым и т.д.

16.Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами (не включая минимальный и максимальный элементы).

17.Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом A1 перейдет в A2, A3 в A4, …, AN

вA1).

18.Дан массив размера N и целое число K (1 ≤ K N). Удалить из мас-

сива элемент с порядковым номером K.

19.Дан целочисленный массив размера N. Удалить из массива все нечетные числа и вывести размер полученного массива и его содержимое.

20.Дан массив размера N. После каждого отрицательного элемента массива вставить элемент с нулевым значением.

45

6.4.Задания по разработке программ для задач с двумерными массивами

1.Даны целые положительные числа M и N. Сформировать целочисленную матрицу размера M × N, у которой все элементы I-й строки имеют значение 10 · I (I = 1, …, M).

2.Дана матрица размера M × N и целое число K (1 ≤ K M). Вывести элементы K-й строки данной матрицы.

3.Создать целочисленную матрицу размера M × N, элементы которой могут принимать значения от 0 до 100. Различные столбцы матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих столбцах. Найти количество столбцов, похожих на последний столбец данной матрицы.

4.Дана матрица размера M × N. Вывести ее элементы, расположенные

встроках с четными номерами (2, 4, …). Вывод элементов производить по строкам, условный оператор не использовать.

5.Дана матрица размера M × N. Найти минимальный среди максимальных элементов ее столбцов.

6.Дана матрица размера M × N. В каждом ее столбце найти количество элементов, больших среднего арифметического всех элементов этого столбца.

7.Дана матрица размера M × N и целые числа K1 и K2 (1 ≤ K1 < K2 M). Поменять местами строки матрицы с номерами K1 и K2.

8.Дана матрица размера M × N (M – четное число). Поменять местами верхнюю и нижнюю половины матрицы.

9.Дана матрица размера M × N и целое число K (1 ≤ K N). Удалить столбец матрицы с номером K.

10.Дана матрица размера M × N и целое число K (1 ≤ K M). Перед строкой матрицы с номером K вставить строку из нулей.

11.Дана матрица размера M × N. Продублировать строку матрицы, содержащую ее максимальный элемент.

12.Дана матрица размера M × N. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.

13.Дана матрица размера M × N. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.

14. Дана квадратная матрица A порядка M. Найти сумму элементов ее главной диагонали, то есть диагонали, содержащей следующие элементы:

A1, 1, A2, 2, A3, 3, …, AM, M.

46

15.Дана квадратная матрица A порядка M. Найти среднее арифметическое элементов ее побочной диагонали, то есть диагонали, содержащей следующие элементы: A1, М, A2, М-1, A3, М-2,…, AМ, 1.

16.Дана квадратная матрица A порядка M. Найти сумму элементов ка-

ждой ее диагонали, параллельной главной (начиная с одноэлементной диаго-

нали A1, М).

17. Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие на главной диагонали и выше нее.

18. Дана квадратная матрица A порядка M. Зеркально отразить ее элементы относительно главной диагонали (при этом элементы главной диагонали останутся на прежнем месте, элемент A1, 2 поменяется местами с A2, 1,

элемент A1, 3 с A3, 1 и т.д.). Вспомогательную матрицу не использовать.

19.Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных позициях строки, а затем, в обратном порядке, все символы, расположенные на нечетных позициях (например, строка «Программа» превратится в «ргамамроП»).

20.Дана строка-предложение на русском языке. Вывести самое короткое слово в предложении. Если таких слов несколько, то вывести последнее из них. Словом считать набор символов, не содержащий пробелов, знаков препинания и ограниченный пробелами, знаками препинания или началом/концом строки.

6.5.Задания по разработке программ с неявно заданным алгоритмом

1.Даны два n-мерных векторов x и y . Составить программу для нахождения скалярного произведение этих векторов.

2.Даны два n-мерных векторов x и y . Составить программу для нахождения координат вектора-произведения этих векторов.

3.Дано множество А и множество B. Составить программу для нахождения пересечения этих множеств.

4.Дано множество А и множество B. Составить программу для нахождения разности этих множеств.

5.На плоскости задано n точек, координаты которых равны первым натуральным числам, например: первая точка имеет координаты (1,1), вторая (2,2), n-я точка имеет координаты (n, n) (рис. 7, а). Составить программу, определяющую для нахождения пересечения этих множеств. Дополнить это

47

множество точками с целочисленными координатами, которые равномерно заполнят плоскость (рис. 7, б).

а)б)

Рис. 7. Диаграммы построены вручную по координатам рассчитанных в программе точек

6. На рис. 8 показана кривая аналогового сигнала, рассчитанного по формуле f (t) =7sin(t / 3 / 7) , сетка от-

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

Рис. 8. Аналоговый сигнал и сетка оцифровки

7.Разработать программу, для перевода числа, записанного в позиционной системе счисления с основанием q, в десятичную систему счисления.

8.Разработать программу, для перевода десятичного числа в позиционную систему счисления с основанием q. Результат представить в виде символьной строки.

9.На листе Excel (рис. 9) записана таблица продажи процессоров по месяцам. Составить программу, которая бы определяла среднегодовую продажу каждого процессора, среднемесячную продажу по всем процессорам, Общее количество процессоров, проданных за год. Все данные должны быть выведены на лист с соответствующими подписями. Перед завершением, программа должна выдать список процессоров, пользующихся наивысшим спросом по результатам года (наивысший спрос определяется в пределах 5 % от максимальной продажи).

48

Рис. 9.

10. На листе Excel (рис. 10) представлена таблица социологического опроса нескольких категорий населения по шкале от -10 до +10. В таблицу внесены усредненные по каждой категории данные. Составить программу, которая может: а) отсортировать данные по качеству здоровья; б) найти категории, имеющие высокий культурный уровень (чтение книг, посещение театров); в) найти категории, подверженные риску заболеваний вследствие курения и пристрастия к алкоголю.

Рис. 10.

Ответы к некоторым задачам

Раздел 2.2.: Задание 1. Ответ: ылукинаК. Задание 2. Ответ: ri ri Задание 3. Ответ: 1211107 Задание 4: Сумма цифр числа = 10 Задание 5. Ответ: Здравствуйте! Я ваша тётя! Задание 6. Ответ: Число вхождений слова «грека» = 3 Задание 7. Ответ: n = 2= числу повторения слова «как». Задание

9. Ответ: Задание 10. Ответ:

49

Раздел 6.2.: Задание 3. Ответ:

Задание 4. Ответ: Задание 5. Ответ: Зада-

ние 6. Ответ: Задание 10. Ответ:

Библиографический список

1 Программирование на VBA. Часть I. Базовые алгоритмические структуры. Практикум / Н.К. Петрова, М.М. Волченко. – Казань: Казан. гос.

энерг. ун-т, 2010. – 55 с.

2.Основы работы на VBA. Массивы: Метод. указания / Сост.: В.В. Косулин, Н.Г. Бикеева – Казань : Казан. гос. энерг. ун-т, 2010. – 44 с.

3.Гарнаев А.Ю. Самоучитель VBA. / А.Ю. Гарнаев. – СПб.: БХВ-

Петербург, 2003. – 512 с.

4.Абрамян М.Э. 1000 задач по программированию. Методические указания / М.Э. Абрамян - Часть II. – Ростов: Ростовский гос. ун-т, 2004. – 42 с.

5.Устинов Н.А. Microsoft Office (Разработка документов в Word, Excel

иприложений на VBA): Учеб. пособие / Н.А. Устинов – Нижний Новгород: Нижегородский гос. ун-т, 2004. – 155 с.

50

Содержание

Предисловие.............................................................................................................

3

I. ОБРАБОТКА СИМВОЛЬНЫХ ПЕРЕМЕННЫХ.............................................

4

1. Средства VBA для работы с символьными переменными.........................

4

1.1

Символьные переменные, строковые функции .....................................

4

1.2

Функции преобразования типов данных и прочие полезные функции

...........................................................................................................................

 

6

2. Примеры решения типовых задач и задачи для самостоятельного

решения ................................................................................................................

7

2.1

Примеры решения типовых задач...........................................................

7

2.2

Задания для самостоятельного чтения программ..................................

8

2.3Задания на разработку программ с неявно заданным алгоритмом. 122 II. ОБЩИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ПО РАБОТЕ С МАССИВАМИ

НА VBA................................................................................................................

144

1.

Понятие массив и индексированные переменные...................................

145

 

2.1

Статические массивы............................................................................

166

 

2.2

Динамические массивы ........................................................................

177

3.

Область видимости массивов на VBA ......................................................

199

4.

Функции VBA для работы с массивами ...................................................

222

5.

Передача массивов в процедуры и функции............................................

244

 

5.1

Способы передачи параметров для обычных переменных...............

255

 

5.2

Особенности передачи массивов.........................................................

277

6.

Примеры решения типовых задач и задачи для самостоятельного

решения ............................................................................................................

299

 

6.1

Примеры чтения программ обработке массивов...............................

299

 

6.2. Задания для самостоятельного чтения программ.............................

399

 

6.3. Задания по разработке программ для задач с одномерными

 

 

массивами.....................................................................................................

433

 

6.4. Задания по разработке программ для задач с двумерными массивами

 

.......................................................................................................................

 

455

 

6.5. Задания на разработку программ с неявно заданным алгоритмом466

ОТВЕТЫ К НЕКОТОРЫМ ЗАДАЧАМ........................................................

488

БИБЛИОГРАФИЧЕСКИЙ СПИСОК..Ошибка! Закладка не определена.9