Лабораторная №1
.pdf5.Задать макрос вычисления n-ого члена геометрической прогрессии по введённым пользователем первому члену и знаменателю.
6.Задать макрос вычисления периметра эллипса по известным радиусам a и b.
7.Используя условную компиляцию вычислить значение переменной.
Функции max, min и возведение в степень выполнить в виде макросов.
8.Используя условную компиляцию вычислить значение переменной.
Функции max, min, взятие модуля и возведение в степень выполнить в виде
макросов.
9.Продемонстрировать особенности применения опции comment
директивы #pragma.
10.Используя условную компиляцию вычислить значение переменной.
Функции max, min, взятие модуля и возведение в степень выполнить в виде
макросов.
11.Используя условную компиляцию вычислить значение переменной.
Функции max, min, взятие модуля, возведение в степень, извлечение корня выполнить в виде макросов.
12. Используя один и тот же идентификатор объявить цифровой и символьный массивы. Для цифрового массива найти значение минимального
11
элемента. Для символьного массива определить наиболее часто встречаемый
символ. Использовать условную компиляцию.
13.Используя условную компиляцию вычислить значение переменной.
Функции max, min, возведение в степень, извлечение корня выполнить в виде
макросов. Условие выбора задать самостоятельно.
14.Используя условную компиляцию вычислить значение переменной.
Условие выбора задать самостоятельно.
15.Используя макросы __DATE__, __TIME__ вывести информационные сообщения. Сформировать произвольное сообщение о программной ошибке.
16.Продемонстрировать особенности использования директивы #line в
обоих режимах.
17.Используя условную компиляцию вычислить значение переменной.
Функции max, min, взятие модуля, возведение в степень выполнить в виде
макросов. Условие выбора задать самостоятельно.
18.Используя условную компиляцию вычислить значение переменной.
Функции max, min, возведение в степень выполнить в виде макросов. Условие
выбора задать самостоятельно.
19.Продемонстрировать особенности применения опций startup и exit
директивы #pragma.
12
20. Проверить вводимые с клавиатуры числа на нечётность и положительность. Оформить в виде макросов определение нечётности,
положительности, вывод диагностических уведомлений. С помощью условной компиляции разделить процессы определения нечётности и положительности чисел.
21. Проверить вводимые с клавиатуры числа на чётность и отрицательность. Оформить в виде макросов определение чётности,
отрицательности, вывод диагностических уведомлений. С помощью условной компиляции разделить процессы определения чётности и отрицательности чисел.
22.Решить квадратное уравнение, используя макросы для задания формулы дискриминанта, корней уравнения и выведения ответа на экран.
23.Продемонстрировать особенности использования директивы #error.
24.Задать макрос вычисления площади круга по введённому пользователем радиусу. Исследовать макрос при использовании постфиксных и префиксных операций.
25.Задано два натуральных числа n, m (n, m ≤ 100), если условие выполняется найти среднее арифметическое чисел, иначе остановить компиляцию при помощи директивы #error.
26.Продемонстрировать работу операции ##.
27.Требуется найти наименьшее натуральное число Q такое, что произведение его цифр равно заданному числу N. Произведение вычислять при помощи макросов с параметрами.
28.Заданы первый и второй элементы арифметической прогрессии.
Найти n-й элемент прогрессии, при вычислениях использовать макросы с
передачей параметров.
13
29.Заданы два числа m и n, которые являются числителем и знаменателем некоторой дроби. Произвести сокращение этой дроби, если возможно используя макросы при вычислениях.
30.Задать макрос вычисления объема эллипсоида по известным радиусам a,b и c.
Уровень Б (+1 балл)
1. Используя макросы задать три числа, определить площадь образуемого треугольника (если выполняется условие существования треугольника). Если заданные числа не являются сторонами треугольника,
вычислить площадь трапеции, задав длину основания и высоту трапеции
(проверить существование трапеции). Проверки выполнять при помощи условной компиляции.
2.Составить справочник операций над множествами: объединение,
пересечение, дополнение, разница и т.д. Операции задать в виде макросов.
3.Доказать, что катеты и высота, проведённая к гипотенузе, связаны соотношением 1/H2 = 1/a2+1/b2, где H – высота, a и b – катеты. Предварительно проверить, является ли треугольник прямоугольным. Вычисления оформить в виде макросов, начальные данные задать самостоятельно.
4.Продемонстрировать возможности опции option директивы
#pragma.
5.На плоскости даны два круга (задан радиус и координаты центра).
Требуется проверить, пересекаются ли они. Для решения задачи использовать макросы с параметрами.
6. Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Используя макросы, по заданным a, b и c вывести соответствующий трехчлен, записанный с использованием алгебраических соглашений:
14
коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице;
член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты равны нулю, тогда трехчлен состоит из одной цифры 0);
знак "+" опускается, если он предшествует отрицательному коэффициенту;
знак "+" опускается, если он стоит в начале выражения (так называемый унарный плюс);
знак умножения между коэффициентом и переменной опускается.
7. Два отрезка на плоскости заданы целочисленными координатами своих концов в декартовой системе координат. Требуется определить,
существует ли у них общая точка. Вычисления оформить в виде макросов,
начальные данные задать самостоятельно.
8.Для делимости числа на 11 необходимо, чтобы разность между суммой цифр, стоящих на четных местах, и суммой цифр, стоящих на нечетных местах, делилась на 11. Передавая каждую цифру заданного числа как параметр, определить делится ли число на 11.
9.Закон Амдаля-Уэра для параллельных вычислительных алгоритмов. Пусть необходимо решить некоторую вычислительную задачу.
Предположим, что её алгоритм таков, что доля |
|
от общего объёма |
|
вычислений может быть получена только последовательными расчётами, а,
соответственно, доля 1 может быть распараллелена идеально (то есть время вычисления будет обратно пропорционально числу задействованных процессоров p ). Тогда ускорение, которое может быть получено на вычислительной системе из p процессоров, по сравнению с однопроцессорным решением не будет превышать величины
15
S |
|
|
|
1 |
|
p |
|
1 |
|
||
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
Для заданных |
|
и |
p |
определить ускорение |
S p |
, для вычислений |
|
|
использовать макросы с параметрами.
10. Запись AX обозначает, что A есть запись числа в системе счисления по основанию X. Если X>10, то для записи числа используются кроме цифр от
0 до 9 заглавные латинские буквы от A до Z. При этом условии X не может быть больше 36.
Используя макросы для вычислений по заданным A и B найти решение уравнения AX = B, либо сообщит об отсутствии у него решений. B – число в десятичной системе счисления.
11.Замок состоит из K уровней. Каждый уровень - это правильный N-
угольник, угол которого совпадает с углом предыдущего. На сторонах верхнего уровня находится по две комнаты (в углах), на сторонах каждого следующего -
на одну больше. Найти количество комнат в замке при помощи макросов вычислений с параметрами.
12. День программиста отмечается в 255-й день года (при этом 1 января считается нулевым днем). Определить дату (месяц и число григорианского календаря), на которую приходится День программиста в заданном году.
В григорианском календаре високосным является:
год, номер которого делится нацело на 400;
год, номер которого делится на 4, но не делится на 100.
Для расчетов использовать макросы вычислений с параметрами.
13.Дано три круга с радиусами r1 , r2 , r3 . Определить, могут ли в круг с
радиусом r1 , поместится круги с радиусами r2 , r3 . Для расчетов использовать
макросы вычислений с параметрами.
16
14. Формула генерации псевдослучайных чисел конгруэнтным методом
имеет следующий вид: xi+1=xi*a(mod(m)). Для заданных x0, а, т сгенерировать n
псевдослучайных чисел, для расчетов использовать макросы вычислений с параметрами.
|
|
|
|
15. Дано натуральное n. Подсчитать количество решений неравенства |
|
x |
2 |
y |
2 |
n |
в натуральных (неотрицательных целых) числах, не используя |
|
|
|
|
действий с вещественными числами. Для расчетов использовать макросы вычислений с параметрами.
16.Дано целые числа a и b. Пусть у треугольника ABC координаты
A=(0,0), B=(a,b), а обе координаты C=(x,y) - целые числа, и площадь треугольника ABC не равна нулю. Найти минимальную площадь треугольника для заданных a и b. Для расчетов использовать макросы вычислений с параметрами.
17.На плоскости заданы две точки A(x1,y1) и B(x2,y2). Определить,
какой из отрезков - OA или OB образует больший угол с осью OX. Для
расчетов использовать макросы вычислений с параметрами.
18.Определить, пересекается ли прямая ax+b=y и отрезок с координатами концов (x1,y1), (x2,y2). Для расчетов использовать макросы вычислений с параметрами.
19.Уравнение Пелля имеет вид: x2-ny2=1, где n – натуральное число.
Напишите программу, которая по заданному n находит какое-нибудь решение
уравнения Пелля в положительных целых числах. Для расчетов использовать
макросы вычислений с параметрами.
20.Проверить является ли заданное число палиндромом. Для расчетов использовать макросы вычислений с параметрами.
21.Дана лесенка из n+2 ступенек, на первой и последней ступеньке написано число 0, на n средних ступеньках написаны произвольные целые числа от -3 до 3. На первой ступеньке стоит человечек, который может за ход
17
перейти на следующую ступеньку или через одну. Необходимо найти такую последовательность ступенек, чтобы сумма чисел написанных на них была максимальной, а путь заканчивался на последней ступеньке. Для расчетов использовать макросы вычислений с параметрами.
22.Дано натуральное число n. Получить все пифагоровы тройки натуральных чисел, каждое из которых не превосходит n, т. е. все тройки натуральных чисел a, b, c такие, что a2+b2=c2 (a b c n). Для расчетов использовать макросы вычислений с параметрами.
23.Дано натуральное число n (n 5). Получить все пятерки натуральных чисел x1, x2, x3, x4, x5 такие, что x1 x2 x3 x4 x5 и x1+...+ x5 = n. Для расчетов использовать макросы вычислений с параметрами.
24.Гусеница ползет по резиновой нити длиной m см со скоростью r
см/мин, стремясь достичь противоположного конца нити. По истечении каждой минуты нить растягивают, увеличивая ее длину на m см. Составить программу определения времени, за которое гусеница достигает конца нити. Для расчетов использовать макросы вычислений с параметрами.
25.Составить программу восстановления задуманного числа x < 100 по заданным остаткам от деления x на 3, 5 и 7. Для расчетов использовать макросы вычислений с параметрами.
26.Дано натуральное число n (n 99). Получить все способы выплаты сумы n с помощью монет достоинством 1, 5, 10 и 20 коп. Для расчетов использовать макросы вычислений с параметрами.
27.Составить программу поиска таких трехзначных чисел, на которые надо умножить число 777, чтобы получить шестизначные числа, записываемые одними единицами, двойками, тройками и т.д. Для расчетов использовать макросы вычислений с параметрами.
28.Дано натуральное число n. Найти все меньшие n числа Мерсена.
(Простое число называется числом Мерсена, если оно может быть
18
представлено в виде 2р – 1, где р – тоже простое число.) Для расчетов
использовать макросы вычислений с параметрами.
29.Дано натуральное число n. Среди чисел 1, …, n найти все такие,
запись которых совпадает с последними цифрами записи их квадрата (как,
например, 62 = 36, 252 = 625 и т.д.). Для расчетов использовать макросы вычислений с параметрами.
30. Натуральное число из n цифр является числом Амстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу (как,
например, 153=13+53+33). Получить все числа Армстронга, состоящие из двух,
трех и четырех цифр. Для расчетов использовать макросы вычислений с параметрами.
Уровень В (+2 балла)
1.Используя макросы обработки переменного числа параметров создать программу сортировки чисел (использовать метод сортировки слиянием).
2.В отделе работают n сотрудников, которые получают заработную плату в гривнах. Требуется определить: насколько зарплата самого высокооплачиваемого из них отличается от самого низкооплачиваемого.
Решить задачу, используя макросы обработки переменного числа параметров.
3. Задано n натуральных чисел. Необходимо определить наибольшее натуральное число, отсутствующее в последовательности. Решить задачу,
используя макросы обработки переменного числа параметров.
4.Используя макросы обработки переменного числа параметров,
создать программу генерации сообщений с помощью передачи каждого слова
как отдельного параметра.
19
5.Используя макросы обработки переменного числа параметров,
составить программу вычисления наибольшего общего делителя произвольного
числа целых чисел.
6.Отрезки на плоскости задаются парами целочисленных координат концевых точек (x1,y1), (x2,y2). Определить, пересекаются ли 2 отрезка. Для расчетов использовать макросы вычислений с параметрами.
7.Задано n чисел, найти сумму всех чисел, на которые каждое ni i 1, n
делится без остатка, независимо друг от друга. Например: 4-7 6-12. Решить
задачу, используя макросы обработки переменного числа параметров.
8.Дано n камней с массами m1, m2 , … mn. Требуется разложить камни на 2 кучки так, чтобы разница масс этих кучек была минимальной. Решить задачу, используя макросы обработки переменного числа параметров.
9.Используя макросы обработки переменного числа параметров создать программу сортировки чисел (использовать метод быстрой сортировки).
10.Будем называть числа дружными, если они состоят из одних и тех
же цифр. Например, числа 1132 и 32321 являются дружными, а 12 и 123 – нет.
Используя макросы обработки переменного числа параметров, определить являются ли n целых чисел дружными.
11. Задано n целых чисел и целое число q, используя макросы обработки переменного числа параметров, определить какие из чисел ni i 1, n
делятся без остатка на q.
12.Используя макросы обработки переменного числа параметров создать программу сортировки чисел (использовать метод сортировки пузырьком).
13.Определим простой цифровой корень (ПЦК) натурального числа N
следующим образом. Если N - простое число, то ПЦК(N) = N. Если число однозначное, но не простое (то есть 1, 4, 6, 8 или 9), то ПЦК(N) = 0. В
20