Тема: Вбудовані функції. Директиви препроцесора.



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Тема: Вбудовані функції. Директиви препроцесора.



Тема: Рекурсивні функції.

Контрольні запитання:

1. Що таке рекурсія?

2. Яка підпрограма називається рекурсивною?

3. Що називають глибиною рекурсії?

4. У яких випадках при виконанні рекурсивних підпрограм виникають помилки переповнення стеку(Stack overflow)?

5. У яких випадках доцільно використовувати рекурсивні алгоритми для розв’язку задач?

6. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

double g(int n)

{

if (n == 0) return 1;

else

if (n > 0)

return g(n-1)*2;

else

return 1 / g(-n);

}

при умові, що функція викликається таким чином

а)cout << g(1) << endl;

б)cout << g(3) << endl;

в)cout << g(-2) << endl;

Яку задачу розв’язує задана рекурсивна функція?

7. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

int f(int n)

{

if (n == 5)

return 120;

else

if (n > 5)

return f(n-1)*n;

else

return f(n+1)/(n+1);

}

при умові, що функція викликається таким чином:

а)cout << f(5) << endl;

б)cout << f(3) << endl;

в)cout << f(6) << endl;

Яку задачу розв’язує задана рекурсивна функція?

8. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

double R(int n)

{

if (n == 0) return 1;

else if (n > 0) return R(n - 1) * 5;

else return R(n + 1) / 5.;

}

при умові, що функція викликається таким чином:

а)cout << R(1) << endl;

б)cout << R(3) << endl;

в)cout << R(-2) << endl;

Яку задачу розв’язує задана рекурсивна функція?

Завдання 1. Написати програму.

Вимоги до завдання:

- використати рекурсивні функції.

- протестувати рекурсивні функції на придатних наборах вхідних даних.

 

 

Варіанти:

  1. Написати рекурсивну функцію для обчислення суми 2 + 4 + 6 + … + 2* N.
  2. Описати рекурсивну функцію обчислення xn для дійсного x (x ¹ 0) і цілого n:

ì 1 при n = 0

xn = í 1/x|n| при n < 0

î x* xn-1 при n > 0

  1. Описати рекурсивну функцію обчислення n – го числа Фібоначі: f0 = 0; f1 = 1; fj = fj-1+ fj-2; j = 2, 3,.… За допомогою функції обчислити N чисел Фібоначі.
  2. Написати рекурсивну функцію для обчислення добутку непарних натуральних чисел 1 * 3* 5 * 7 * … *( 2* N +1).
  3. Написати рекурсивну функцію для обчислення суми N введених з клавіатури чисел.
  4. Написати рекурсивну функцію, яка отримує рядок і підраховує кількість цифр у цьому рядку.
  5. Написати рекурсивну функцію, яка вводить послідовність чисел до зустрічі 0 і підраховує кількість введених чисел.
  6. Написати рекурсивну функцію для обчислення знакозмінної суми 1 - 2 +3 – 4 …+ (-1)N N.
  7. Написати рекурсивну функцію для обчислення добутку парних натуральних чисел 2 * 4* 6 * 8 * … *( 2* N).
  8. Написати рекурсивну функцію для обчислення кількості парних серед N введених з клавіатури чисел.
  9. Написати рекурсивну функцію для обчислення суми sin 10 + sin 20 + sin 30 + … sin N0.
  10. Написати рекурсивну функцію, яка отримує рядок і підраховує кількість малих латинських букв у цьому рядку.
  11. Написати рекурсивну функцію для обчислення суми квадратів 12 + 22 + 32 + … N2.
  12. Написати рекурсивну функцію для обчислення суми 1 – 1/2 +1/3 – 1/4 …+ (-1)N 1/N.
  13. Написати рекурсивну функцію для знаходження суми трицифрових цілих чисел повних квадратів (100+121+ +144+...+900+961).

 

Завдання 2. Написати програму.

Вимоги до завдання:

- використати рекурсивні функції.

- протестувати рекурсивні функції на придатних наборах вхідних даних.

 

 

Варіанти:

  1. Написати рекурсивну функцію, яка отримує масив дробових чисел та обертає його.
  2. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис ідентифікатора.
  3. Написати рекурсивну функцію, яка отримує масив дробових чисел та перевіряє його на впорядкованість по неспаданню.
  4. Описати рекурсивну функцію обчислення НСД(n,m) - найбільшого спільного дільника натуральних цілих чисел n і m, що використовує співвідношення НСД(n,m) = НСД(m,r), де r - остача від ділення n на m. З її допомогою знайти найбільший спільний дільник натуральних чисел a і b.
  5. Написати рекурсивну функцію, яка виконує пошук деякого цілого числа у масиві цілих чисел та повертає позицію входження числа чи 0(у тому разі , якщо шуканого числа у масиві немає).
  6. Написати рекурсивну функцію, яка отримує ціле число і виводить його на екран у 2-вому представленні.
  7. Написати рекурсивну функцію, яка визначає чи є задане ціле степенем числа 3.
  8. Написати рекурсивну функцію, яка отримує масив цілих чисел та шукає максимальний елемент масиву.
  9. Написати рекурсивну функцію, яка отримує одновимірний масив та обертає його.
  10. Написати рекурсивну функцію, яка отримує масив цілих чисел та шукає мінімальний елемент масиву.
  11. Написати рекурсивну функцію, яка отримує рядок і перевіряє його на симетричність.
  12. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис цілого числа у 10-вій системі числення.
  13. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис цілого числа у 16-вій системі числення.
  14. Написати рекурсивну функцію, яка отримує ціле число і виводить на його екран у 8-вій системі числення.
  15. Написати рекурсивну функцію, яка отримує рядок і перевіряє чи рядок є правильним записом дробового числа з фіксованою крапкою.

 

Лабораторна робота №2

Завдання 4.

Створити приклад програми з використанням директив умовної компіляції.

 

Лабораторна робота №3

Тема: Посилання. Вказівники та посилання як параметри та результати функцій.

Контрольні запитання:

1. Означення посилання Оголошення посилання та ініціалізація.

2. Чи можна змінити посилання(спрямувати на інше дане)?

3. Порівняйте вказівник та посилання.

4. Передача параметрів у функції за значенням.

5. Передача параметрів у функції за посиланням( у С та С++).

6. Напишіть функцію обміну значеннями двох змінних за допомогою вказівників. Напишіть відповідний оператор виклику функції.

7. Напишіть функцію обміну значеннями двох змінних за допомогою посилань. Напишіть відповідний оператор виклику функції.

 

Завдання 1. Написати функцію(чи шаблон), яка отримує 2 вказівники на змінні і виконує обмін значеннями між змінними. Перевірити роботу функції для двох змінних.

Варіанти:

 

1. За допомогою функції поміняти місцями стовпці матриці, вказані користувачем.

2. За допомогою функції поміняти місцями у одновимірному масиві перший елемент з другим, третій з четвертим і т. д

3. За допомогою функції обернути одновимірний масив.

4. За допомогою функції поміняти місцями перший та останній стовпці матриці.

5. За допомогою функції поміняти місцями дві половини одновимірного масиву.

6. За допомогою функції поміняти місцями перший та останній рядки матриці.

7. За допомогою функції поміняти місцями перший та другий рядки матриці.

8. За допомогою функції поміняти місцями діагоналі квадратної матриці.

9. За допомогою функції поміняти місцями кожні два сусідні рядки матриці.

10. За допомогою функції поміняти місцями кожні два сусідні стовпці матриці.

11. За допомогою функції обернути матрицю по рядках.

12. За допомогою функції обернути матрицю по стовпцях.

 

Завдання 2. Написати функцію для розв’язування квадратного рівняння.

а) Функція отримує коефіціенти квадратного рівняння та вказівники на змінні, у яких потрібно розмістити корені рівняння. Функція повертає кількість коренів рівняння. Перевірити роботу функції.

б) Написати функцію розв’язування квадратного рівняння за допомогою посилань. Перевірити роботу функції.

 

Завдання 3. Написати функцію (або шаблон функції), яка приймає два вказівника і повертає вказівник на менше число. За допомогою функції:

а) Вивести на екран менше з двох введених чисел

б) Збільшити на 10 менше число.

 

Завдання 4.Виконати завдання 3 за допомогою посилань.

 

Лабораторна робота № 5

Тема: Вказівники на функції. Масиви вказівників на функції.

Завдання 2 .

Написати бібліотеку функцій(шаблонів функцій) для роботи з динамічним одновимірним масивом, які реалізують наступні завдання

1. Створення динамічного масиву вказаного розміру і його заповнення випадковими числами. Функція повертає адресу створеного масиву( або отримує посилання на вказівник на базовий тип масиву).

2. Вивід елементів масиву

3. Доповнення масиву одним елементом. Функція отримує адресу масиву, розмір та елемент для доповнення.

4. Видалення елемента за вказаною позицією.

5. Вставка нового елемента у довільну допустиму позицію у масиві

6. Доповнення масиву блоком елементів.

7. Видалення блоку елементів із масиву за вказаною позицією.

8. Вставка блоку нових елементів у довільну допустиму позицію у масиві

 

За допомогою функцій бібліотеки розв’язати задачу згідно варіанту.

Варіанти:

1) Дано масив дійсних чисел. Після кожного від’ємного елемента вставити його модуль.

2) Дано масив дійсних чисел. Видалити ту половину масиву, у якій розміщений мінімальний елемент.

3) Дано масив дійсних чисел. Видалити всі фрагменти масиву, які утворюють зростаючу послідовність.

4) Дано цілочислові масиви А і В. Додати у кінець масиву А елементи з масиву В, кратні 3 або 7.

5) Дано масив цілих чисел. Якщо перший елемент масиву є парним числом, то видалити із масиву всі парні числа, інакше – навпаки(видалити непарні числа).

6) Дано масив цілих чисел. Видалити з масиву усі непарні числа.

7) Дано масив цілих чисел. Перед кожним елементом масиву вставити число, що рівне останній цифрі елемента. Наприклад, масив A = {12, 23, 89, 50} має бути перетворений до {2, 12, 3, 23, 9, 89, 0, 50}.

8) Задача «Решето Ератосфена». Дано перших N натуральних чисел. Спочатку викреслюються(видаляються із масиву) числа, що діляться на 2, потім ті що діляться на 3 . і т.д. Результат – прості числа із діапазону 1..N.

9) Дано масив дійсних чисел. Видалити всі фрагменти масиву, які утворюють зростаючу послідовність.

10) Дано 2 масиви дійсних чисел: A, B. Утворити масив із спільних елементів цих масивів мінімально можливого розміру.

11) Дано масив символів. Кожну групу з повторів деякого символу замінити одним його входженням.

12) Дано масив дійсних чисел. Видалити всі повторні входження елементів у масиві.

13) Дано масив натуральних чисел. Доповнити початок цілого масиву послідовністю чисел, що передують першому елементу. Наприклад, для масиву {5, 10, 100, 3} очікується результат {1, 2, 3, 4, 5, 10, 100, 3}.

14) Дано 2 масиви дійсних чисел: A, B. Утворити масив із елементів масиву А, які не зустрічаються у В.

15) Дано масив А натуральних чисел. Утворити масиви мінімально можливого розміру В і С, що містять трицифрові та двоцифрові числа масиву А відповідно.

 

Лабораторна робота № 7-8

Завдання 2.

Написати бібліотеку функцій(шаблонів функцій) для роботи з динамічним двовимірним масивом, які реалізують наступні завдання

1. Створення динамічного масиву вказаного розміру і його заповнення випадковими числами. Функція повертає адресу створеного масиву( або адреса матриці передається за посиланням).

2. Вивід елементів матриці

3. Доповнення матриці новим рядком

4. Видалення з матриці рядка за вказаним номером

5. Вставка нового рядка за вказаним номером

6. Доповнення матриці новим стовпчиком

7. Видалення з матриці стовпця за вказаним номером

8. Вставка нового стовпця за вказаним номером

За допомогою функцій бібліотеки розв’язати задачу згідно варіанту. Розміри матриці задавати з клавіатури.

Варіанти:

1) У матриці цілих чисел видалити рядки з парними номерами.

2) У матриці дійсних чисел вставити після кожного непарного стовпця стовпчик- копію.

3) Доповнити символьну матрицю нульовим та останнім рядками, що складаються із символів ‘*’.

4) Видалити стовпці матриці, що містять більше двох нулів.

5) Доповнити символьну матрицю нульовим та останнім стовпцями, що складаються із символів ‘|’.

6) Видалити рядки матриці, сума елементів яких перевищує 50.

7) Додати до матриці рядок із сумами елементів відповідних стовпців.

8) Додати до матриці стовпець із значеннями найбільших елементів відповідних рядків.

9) Видалити із матриці рядок та стовпець, на перетині яких знаходиться максимальний елемент матриці.

10) Додати на початок матриці рядок із кількістю парних елементів у відповідних стовпцях цілочислової матриці..

11) Додати на початок матриці стовпець із діагональних елементів mматриці.

12) Видалити із рядок, у якому розміщений найменший елемент матриці.

13) Після кожного рядка з непарним номером вставити цей рядок з оберненим порядком розташування елементів.

14) Видалити стовпці матриці, сума елементів яких не перевищує 4.

15) Додати до матриці рядок із значеннями найменших елементів відповідних стовпців.

 

Завдання 3.Створити функції для обробки ступінчатої матриці:

1. Створення та заповнення

2. Вивід елементів матриці

3. Знаходження сум у кожному рядку матриці

4. Реверс матриці по рядках.

5. Циклічний зсув рядків матриці вверх(вниз).

 

 

Лабораторна робота № 9

Тема: Рядки у С.

Мета:Формування вмінь і навичок обробки рядків у С.

Контрольні запитання:

1. Який рядок називають ASCIIZ- рядком?

2. Способи оголошення ASCIIZ – рядків. Ініціалізація.

3. Ввід - вивід рядків.

4. Функції gets(), gets_s(), cin.getline(),cin.get().

5. Які з оголошень рядків є коректними? Відповідь обгрунтуйте.

char str0[] ="Good day!";

char str1[] = {'A','B','C'};

char str2[] = {'D', 70, 'G', 0};

char str4[] = {'A','B','\0','C'};

char *str5 = "abcdefgh";

char str6[] ="\\0\\ minutes\0 we have!";

6. Для кожного правильно оголошеного рядка(див.завд 5) виконайте наступні дії:

o обчисліть значення sizeof()

o обчисліть значення strlen()

o виведіть рядок на екран

o замініть перший символ рядка на ‘*’ : str[0] = ‘*’

Результати поясніть.

7. Поясніть роботу наступних рядків коду:

 

cout<< "We learn C- string" + 3 <<endl;

cout<< *("We learn C- string" + 5) <<endl;

cout<< "We learn C- string"[0] <<endl;

.

Завдання 1.Створити програму для виконання задачі згідно варіанту.

Варіанти:

1) Дано рядок. Порахувати кількість голосних букв у рядку.

2) Вводиться рядок. Порахувати кількість букв ’а’ у рядку.

3) Дано рядок. Замінити кожний символ ’+’ у рядку на символ ’-’. Написати відповідну функцію.

4) Дано рядок. Написати функцію, яка повертає кількість цифр у рядку. Перевірити роботу функції.

5) Дано рядок. Замінити у рядку кожну латинську букву наступною про алфавіту(букв ‘z’, ‘Z’ замінювати буквою ‘a’, ‘A’). Наприклад, рядок “Zebra has two colors” має перетворитися на “Afcsb ibt uxp dpmpst”. Написати відповідну функцію шифрування рядка.

6) Дано текст. Визначити чи у текст входять всі букви слова “win”.

7) Дано рядок. Замінити кожну цифру рядка на символ крапки. Написати відповідну функцію.

8) Вводиться рядок, що містить символи крапка. Вивести послідовність символів, розміщених між першою та другою крапкою.

9) Вводиться рядок. Порахувати кількість букв латиниці у рядку.

10) Вводиться рядок. Визначити чи у тексті зустрічається сполучення букв ‘no’.

11) Вводиться рядок. Визначити чи він є паліндромом(читається однаково .з обох сторін).

12) Дано текст, що складається з кількох речень. Речення можуть закінчуватися знаками ‘.’, ‘?’,’!’. Порахувати кількість речень у тексті.

13) Дано рядок з формулою. Знайти кількість арифметичних операцій та кількість аргументів у формулі.

Завдання 2.Створити програму для виконання задачі згідно варіанту. Написати відповідну функцію для роботи з рядком(рядками). При розв’язанні задачі не користуватися бібліотечними функціями.

Варіанти:

1) Вставити ’*’ після кожного входження букв ’а’ чи ’А’. Результат розмістити у новому рядку.

2) Видалити у рядку всі входження заданої букви. Результат розмістити у новому рядку.

3) Виконати копію символів латиниці з одного рядка у інший.

4) Написати та протестувати свою власну функцію – аналог бібліотечної функції strlen().

5) Написати та протестувати свою власну функцію – аналог бібліотечної функції strcpy().

6) Написати та протестувати свою власну функцію – аналог бібліотечної функції strncpy().

7) Написати та протестувати свою власну функцію – аналог бібліотечної функції strcat().

8) Написати та протестувати свою власну функцію – аналог бібліотечної функції strcmp().

9) Написати та протестувати свою власну функцію – аналог бібліотечної функції strncat().

10) Написати та протестувати свою власну функцію – аналог бібліотечної функції atoi().

11) Написати та протестувати свою власну функцію – аналог бібліотечної функції stricmp().

12) Написати та протестувати свою власну функцію – аналог бібліотечної функції strpbrk().

13) Написати та протестувати свою власну функцію – аналог бібліотечної функції strchr().

14) Написати та протестувати свою власну функцію – аналог бібліотечної функції itoa().

15) Написати та протестувати свою власну функцію – аналог бібліотечної функції strrchr().

 

 

Лабораторна робота № 10

Завдання 2.

Описати масив Zoo, кожний елемент якого може зберігати інформацію або про домашню тварину(кличка, порода, вік), або про дику( назва, місцевість, де проживає), або про птаха. Описати функції для заповнення та виведення масиву Zoo, пошуку інформації в ньому по різноманітним критеріям. При побудові програми використати об’єднання.

 

Лабораторна робота № 13

Тема: Рекурсивні функції.

Контрольні запитання:

1. Що таке рекурсія?

2. Яка підпрограма називається рекурсивною?

3. Що називають глибиною рекурсії?

4. У яких випадках при виконанні рекурсивних підпрограм виникають помилки переповнення стеку(Stack overflow)?

5. У яких випадках доцільно використовувати рекурсивні алгоритми для розв’язку задач?

6. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

double g(int n)

{

if (n == 0) return 1;

else

if (n > 0)

return g(n-1)*2;

else

return 1 / g(-n);

}

при умові, що функція викликається таким чином

а)cout << g(1) << endl;

б)cout << g(3) << endl;

в)cout << g(-2) << endl;

Яку задачу розв’язує задана рекурсивна функція?

7. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

int f(int n)

{

if (n == 5)

return 120;

else

if (n > 5)

return f(n-1)*n;

else

return f(n+1)/(n+1);

}

при умові, що функція викликається таким чином:

а)cout << f(5) << endl;

б)cout << f(3) << endl;

в)cout << f(6) << endl;

Яку задачу розв’язує задана рекурсивна функція?

8. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

double R(int n)

{

if (n == 0) return 1;

else if (n > 0) return R(n - 1) * 5;

else return R(n + 1) / 5.;

}

при умові, що функція викликається таким чином:

а)cout << R(1) << endl;

б)cout << R(3) << endl;

в)cout << R(-2) << endl;

Яку задачу розв’язує задана рекурсивна функція?

Завдання 1. Написати програму.

Вимоги до завдання:

- використати рекурсивні функції.

- протестувати рекурсивні функції на придатних наборах вхідних даних.

 

 

Варіанти:

  1. Написати рекурсивну функцію для обчислення суми 2 + 4 + 6 + … + 2* N.
  2. Описати рекурсивну функцію обчислення xn для дійсного x (x ¹ 0) і цілого n:

ì 1 при n = 0

xn = í 1/x|n| при n < 0

î x* xn-1 при n > 0

  1. Описати рекурсивну функцію обчислення n – го числа Фібоначі: f0 = 0; f1 = 1; fj = fj-1+ fj-2; j = 2, 3,.… За допомогою функції обчислити N чисел Фібоначі.
  2. Написати рекурсивну функцію для обчислення добутку непарних натуральних чисел 1 * 3* 5 * 7 * … *( 2* N +1).
  3. Написати рекурсивну функцію для обчислення суми N введених з клавіатури чисел.
  4. Написати рекурсивну функцію, яка отримує рядок і підраховує кількість цифр у цьому рядку.
  5. Написати рекурсивну функцію, яка вводить послідовність чисел до зустрічі 0 і підраховує кількість введених чисел.
  6. Написати рекурсивну функцію для обчислення знакозмінної суми 1 - 2 +3 – 4 …+ (-1)N N.
  7. Написати рекурсивну функцію для обчислення добутку парних натуральних чисел 2 * 4* 6 * 8 * … *( 2* N).
  8. Написати рекурсивну функцію для обчислення кількості парних серед N введених з клавіатури чисел.
  9. Написати рекурсивну функцію для обчислення суми sin 10 + sin 20 + sin 30 + … sin N0.
  10. Написати рекурсивну функцію, яка отримує рядок і підраховує кількість малих латинських букв у цьому рядку.
  11. Написати рекурсивну функцію для обчислення суми квадратів 12 + 22 + 32 + … N2.
  12. Написати рекурсивну функцію для обчислення суми 1 – 1/2 +1/3 – 1/4 …+ (-1)N 1/N.
  13. Написати рекурсивну функцію для знаходження суми трицифрових цілих чисел повних квадратів (100+121+ +144+...+900+961).

 

Завдання 2. Написати програму.

Вимоги до завдання:

- використати рекурсивні функції.

- протестувати рекурсивні функції на придатних наборах вхідних даних.

 

 

Варіанти:

  1. Написати рекурсивну функцію, яка отримує масив дробових чисел та обертає його.
  2. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис ідентифікатора.
  3. Написати рекурсивну функцію, яка отримує масив дробових чисел та перевіряє його на впорядкованість по неспаданню.
  4. Описати рекурсивну функцію обчислення НСД(n,m) - найбільшого спільного дільника натуральних цілих чисел n і m, що використовує співвідношення НСД(n,m) = НСД(m,r), де r - остача від ділення n на m. З її допомогою знайти найбільший спільний дільник натуральних чисел a і b.
  5. Написати рекурсивну функцію, яка виконує пошук деякого цілого числа у масиві цілих чисел та повертає позицію входження числа чи 0(у тому разі , якщо шуканого числа у масиві немає).
  6. Написати рекурсивну функцію, яка отримує ціле число і виводить його на екран у 2-вому представленні.
  7. Написати рекурсивну функцію, яка визначає чи є задане ціле степенем числа 3.
  8. Написати рекурсивну функцію, яка отримує масив цілих чисел та шукає максимальний елемент масиву.
  9. Написати рекурсивну функцію, яка отримує одновимірний масив та обертає його.
  10. Написати рекурсивну функцію, яка отримує масив цілих чисел та шукає мінімальний елемент масиву.
  11. Написати рекурсивну функцію, яка отримує рядок і перевіряє його на симетричність.
  12. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис цілого числа у 10-вій системі числення.
  13. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис цілого числа у 16-вій системі числення.
  14. Написати рекурсивну функцію, яка отримує ціле число і виводить на його екран у 8-вій системі числення.
  15. Написати рекурсивну функцію, яка отримує рядок і перевіряє чи рядок є правильним записом дробового числа з фіксованою крапкою.

 

Лабораторна робота №2

Тема: Вбудовані функції. Директиви препроцесора.

Контрольні запитання:

1. Які функції називають вбудованими?

2. Мета застосування вбудованих функцій.

3. Яким правилам має задовольняти вбудована функція?

4. Призначення препроцесора.

5. Призначення директиви препроцесора #include. Формат директиви.

6. Призначення директив препроцесора #define, #undef.

7. Правила створення макросів.

8. Умовна компіляція програми. Директиви умовної компіляції.

9. Відмінності між макросами та функціями.

Завдання 1.Створити програму з використанням вбудованої функції.

Варіанти:

  1. Написати вбудовану функцію, яка отримує символ і перевіряє чи він є цифрою.
  2. Написати вбудовану функцію, яка повертає середнє арифметичне трьох переданих їй чисел.
  3. Написати вбудовану функцію, яка отримує символ і перевіряє чи він є малою латинською літерою.
  4. Написати вбудовану функцію, яка повертає менше з двох переданих їй чисел.
  5. Написати вбудовану функцію, яка отримує символ і перевіряє чи він є великою латинською літерою.
  6. Написати вбудовану функцію, яка повертає більше з двох переданих їй чисел.
  7. Написати вбудовану функцію, яка отримує символ і перевіряє чи він є знаком.
  8. Написати вбудовану функцію, яка отримує символ і повертає цей символ у верхньому регістрі(якщо це можливо).
  9. Написати вбудовану функцію, яка повертає суму квадратів двох переданих їй чисел.
  10. Написати вбудовану функцію, яка отримує три числа та перевіряє існування трикутника на таких сторонах.
  11. Написати вбудовану функцію, яка отримує символ і повертає цей символ у нижньому регістрі(якщо це можливо).
  12. Написати вбудовану функцію, яка отримує ціле число і перевіряє чи воно закінчується на цифру 3 або 7.
  13. Написати вбудовану функцію, яка отримує символ і перевіряє чи він є пробільним(пропуском, табуляцією чи новим рядком).
  14. Написати вбудовану функцію, яка отримує ціле число і перевіряє його на кратність 3 чи 5.

 

Завдання 2.Програма «Шифрування коду».Скласти програму, що містить текст програми у зашифрованому вигляді.

Створити файл code.h, у якому розміщені директиви для заміни деяких ключових слів, символів мови С++ на нові «ключові» слова(наприклад, слову begin поставити у відповідність {,end - }та ін.) Підключити code.h у файлі з головною функцією.

 

Завдання 3.Створити макрос згідно варіанту та перевірити роботу макросу.

Подивитися на результат роботи препроцесора, виконуючи наступні кроки:

  • Контекстне меню для проекту-Властивості проекту – С++ - Препроцесор – Генерувати файл препроцесора – Так
  • Скомпілювати проект (Ctr-f7)
  • Відкрити файл з розширенням .i з папки проекту.

Варіанти:

 

1. Створити макрос для обчислення n!.

2. Створити макрос для обчислення xN.

3. Створити макроси для обчислення більшого з двох та більшого з трьох.

4. Створити макроси, які перевіряють число на парність та кратність 5.

5. Створити макроси для округлення дробового до найближчого цілого, та для відсікання дробової частини.

6. Створити макрос, які перевіряє існування трикутника на трьох сторонах

7. Створити макроси для обчислення меншого з двох та меншого з трьох.

8. Створити макроси для обчислення гіпотенузи прямокутного трикутника за двома катетами та навпаки(обчислення другого катета за гіпотенузою та першим катетом)

9. Створити макроси для округлення дробового до найближчого цілого, та для отримання дробової частини числа.

10. Створити макрос для обчислення 2n!!.

11. Створити макроси для обчислення середнього з двох та середнього з трьох чисел.

12. Створити макроси для обчислення площі круга та поверхні кулі. Оголосити препроцесорну константу PI.

13. Створити макроси для перетворення сантиметрів у дюйми та навпаки.. Оголосити препроцесорну константу зі значенням 2.54.

14. Створити макроси для перетворення градусі Цельсія у Фаренгейти та навпаки. Формула переходу TF = TC *1.8 +32.

 

Завдання 4.

Створити приклад програми з використанням директив умовної компіляції.

 

Лабораторна робота №3



Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.108.188 (0.051 с.)