Главная Обратная связь Поможем написать вашу работу!

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Обробка числових та символьних послідовностей



 

 

Мета роботи:поглиблення знань та навичок роботи з циклами на прикладі розв’язку задач обробки числових та символьних послідовностей засобами С/C++; ознайомлення з символьним типом даних та типовими за- собами їх обробки.

 

 

Теоретичні основи.

Часто у практиці програмування виникають ситуації, коли для розв’-

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

Річ у тім, що для зберігання й обробки послідовностей однотипних даних у мовах програмування зазвичай застосовуються масиви. Насправді

ж багато задач може бути розв’язано без використання будь-яких структур даних.

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

Так, наприклад, для обрахування суми або добутку значень деякої числової послідовності зовсім нема потреби в оголошенні масиву, бо такі дії цілком можуть бути виконані за допомогою лише одного циклу, під час введення даних (див. приклад завдання 7.1).

Значення символьного (літерного) типу char – непустий символ ко- дової таблиці ASCII (American Standard Code Information Interchange – аме- риканський стандартний код обміну інформацією) алфавіту ПК.

Оголошення змінної символьного типу у C-програмі здійснюється наступним чином:

 


 

 

або


char c;

 

 

unsigned char c;


 

Можна разом із оголошенням символьної змінної присвоїти їй поча- ткове значення (в одинарних лапках), наприклад:

 


 

 

або або


char c=′A′ ;

 

 

char c=′\x41′; // 41 – шістнадцятковий ASCII-код символу ′A′ char c=′\101′; // 101 – вісімковий ASCII-код символу ′A′


 

 

Зображення символів у вигляді їх шістнадцяткового або вісімкового ASCII-кодів зручно лише для керуючих символів (коди ASCII ′\x01′–′\x1f′). Крім того, деякі керуючі символи можна записувати за допомогою так зва- них керуючих послідовностей, наприклад:



′\a′– звуковий сигнал;

′\n′– переведення рядка;

′\r′– повернення каретки;

′\t′– горизонтальна табуляція;

′\v′ –вертикальнатабуляція.

 

Використання керуючих послідовностей символів можливо всюди, де можуть вживатись друковані символи. Наприклад, використання керу- ючої послідовності ′\n′ у операторі printf() після виведення переводить кур- сор на наступний рядок:

 

 

printf(″Курсор буде переведено на наступний рядок\n″);

 

 

Символьній змінній можна присвоювати значення іншої символьної змінної, а також можна порівнювати символьні змінні між собою. Символи вважаються рівними, якщо рівні їх ASCII-коди. Більшим є символ з біль- шим ASCII-кодом.

До значень символьного типу корисно застосовувати макроси кла- сифікації символів is…, визначені у заголовному файлі ctype.h:

isalnum– алфавітно-цифровий символ;

isalpha– алфавітний символ;

isascii– символ ASCII (0<=c<=0x7E);

iscntrl– керуючий код ASCII;

isdigit– цифра від ′0′ до ′9′;

isgraph– друкований символ, крім пробілу;



islower– мала літера від ′a′ до ′z′;

isprint– друкований символ або пробіл;

ispunct– символ пунктуації;

isspace– пробіл, табуляція, повернення каретки, переведення рядка, вертикальна табуляція;

isupper– велика літера від ′A′ до ′Z′;

isxdigit– шістнадцяткова цифра від ′0′ до ′9′ або літера від ′А′ до ′F′

(від ′а′ до ′f′).

 

Ці макроси повертають ненульове значення (істину), якщо символ належить до заданої множини символів, або нуль (хибність) – у противно- му разі.

Дія цих макросів не розповсюджується на символи з кодами ASCII більше, ніж 0x7Е (наприклад, кирилицю).


 

 

Використання макросу is… розглянуто у прикладі завдання 7.2.

До даних символьного типу можуть бути застосовані наступні функції:

Функція Призначення Приклад #include
getc() getch() getchar() – читання символу з відображенням – читання символу без відображення – читання символу з відображенням c=getc(stdin); c=getch(); c=getchar(); stdio.h conio.h stdio.h
getche() – читання символу з відображенням c=getche(); conio.h
putc() putch() putchar() – відображення символу – відображення символу – відображення символу putc(c,stdout); putch(c); putchar(c); stdio.h conio.h stdio.h

 

Приклад завдання 7.1:

Дано натуральне число n та дійсні числа a1, a2, …, an. Обчислити

S=a1+a3+…+an.

 

 

Розв’язок:

/* 7.1 */

#include <stdio.h> main()

{

float s=0,a; unsigned int i,n;

printf("n=");

scanf("%u",&n); for(i=1;i<=n;i++)

{

printf("a%u=",i);

scanf("%f",&a); if(i%2)s+=a;

}



printf("s=%7.3f",s); return 0;

}

 

Результати роботи:


 

 

Приклад завдання 7.2:

Ввести довільну послідовність символів, закінчивши введення нати-

сканням клавіші Enter. Визначити кількість введених цифрових символів.

 

 

Розв’язок:

/* 7.2 */

#include <stdio.h>

#include <conio.h>

#include <ctype.h> main()

{

const char enter='\r'; unsigned int s=0; char c;

printf("Input text:"); do

{

c=getche(); // читання символу

if(isdigit(c))s++; // макрос класифікації символів

}

while(c!=enter); printf("\nDigits=%u",s); return 0;

}

 

Результати роботи:

 

 

Завдання:

1.Дано натуральне число n та натуральні числа a1, a2, …, an. Знайти най- більший спільний дільник для заданої послідовності. Рекомендовано застосування алгоритму Евкліда.

2.Дано натуральні числа n, k, m та послідовність натуральних чисел a1, a2,

…, an. Визначити кількість членів заданої послідовності, кратних k і не- кратних m.

3.Дано натуральне число n та послідовність натуральних чисел a1, a2, …,

an. Визначити кількість парних і непарних членів заданої послідовності.

4.Дано натуральне число n та послідовність натуральних чисел a1, a2, …,

an. Визначити кількість членів заданої послідовності, котрі мають парні


 

 

порядкові номери та є непарними числами.

5.Простим називається число, що має тільки два дільники – саме число й одиницю. Дано натуральне число n та послідовність натуральних чисел

a1, a2, …, an. Визначити кількість простих чисел – членів заданої послі- довності.

6.Дано натуральне число n та дійсні числа a1, a2, …, an. Обчислити

S = an - an-1 + an-2 - K ± a .

1 2 2 n

7.Дано натуральне число n та послідовність дійсних чисел a1, a2, …, an. В заданій послідовності знайти максимальне і мінімальне числа.

8.Дано натуральні числа n, m та послідовність натуральних чисел a1, a2,

…, an. Якщо у заданій послідовності є хоча б один член, котрий дорів-

нює m, то обчислити суму тих членів, що йдуть за першим таким чис-

лом; у противному разі – обчислити суму усіх членів заданої послідов- ності.

9.Дано натуральне число n та послідовність дійсних чисел a1, a2, …, an.

Знайти у заданій послідовності таке число, котре якомога наближене до

цілого числа.

10.Дано натуральне число n та послідовність дійсних чисел a1, a2, …, an.

Визначити у заданій послідовності число сусідств двох додатних чисел.

11.Дано натуральне число n, дійсне число k та послідовність дійсних чисел a1, a2, …, an. Визначити скільки членів заданої послідовності із номера- ми 1, 2, 4, 8 тощо мають значення менше, ніж k?

12.Дано натуральне число n, дійсне число k та послідовність дійсних чисел a1, a2, …, an. Знайти у заданій послідовності таке число, котре якомога наближене до числа k.

13.Дано натуральне число n та дійсні числа a1, a2, …, an. Обчислити

P = (1 + an )(1 + an )K(1 + an ).

1 2 n

14.Ввести довільну послідовність символів. Визначити у заданій послідов- ності кількість символів, котрі належать до будь-якої абетки.

15.Ввести натуральне число x розміром у один байт та довільну послідов- ність символів. Визначити у заданій послідовності кількість символів, значення ASCII-коду яких збігається з числом x.

16.Ввести довільну послідовність символів. Визначити у заданій послідов- ності номер першого цифрового символу, якщо такий там є.

17.Ввести натуральні числа a і b розміром у один байт Сформувати табли- цю ASCII-кодів символів з номерами від a до b.

18.Ввести довільну послідовність символів. Визначити у заданій послідов- ності символи з мінімальним та максимальним ASCII-кодами, та ці коди.

19.Ввести довільну послідовність символів. Визначити суму і добуток ASCII-кодів членів заданої послідовності.

20.Ввести довільну послідовність символів. Визначити у заданій послідов- ності кількість символів, котрі є цифровими та мають парні порядкові номери.

21.Ввести натуральне число x розміром у один байт та довільну послідов- ність символів. Визначити у заданій послідовності такий символ, зна-

чення ASCII-коду якого якомога наближене до числа x.


 

22.Ввести два довільних символи c1 і c2. Вивести послідовність символів, значення ASCII-кодів котрих знаходяться між ASCII-кодами c1 і c2.

23.Ввести довільну послідовність символів. Визначити суму ASCII-кодів голосних і добуток ASCII-кодів приголосних латинських символів за- даної послідовності.

24.Ввести довільну послідовність символів. Визначити у заданій послідов- ності кількість символів, що не є цифровими та мають значення ASCII- коду більше за код першого з введених символів.

25.Ввести довільну послідовність символів. Визначити символ, ASCII-код котрого якомога наближений до середнього арифметичного усіх членів

заданої послідовності.

26.Дано натуральне число n та послідовність дійсних чисел a1, a2, …, an. В заданій послідовності знайти максимальне і мінімальне числа.

27.Дано натуральні числа n, m та послідовність натуральних чисел a1, a2,

…, an. Якщо у заданій послідовності є хоча б один член, котрий дорів-

нює m, то обчислити суму тих членів, що йдуть за першим таким чис-

лом; у противному разі – обчислити суму усіх членів заданої послідов- ності.

28.Дано натуральне число n та послідовність дійсних чисел a1, a2, …, an.

Знайти у заданій послідовності таке число, котре якомога наближене до

цілого числа.

29.Дано натуральне число n та послідовність дійсних чисел a1, a2, …, an.

Визначити у заданій послідовності число сусідств двох додатних чисел.

30.Дано натуральне число n, дійсне число k та послідовність дійсних чисел a1, a2, …, an. Визначити скільки членів заданої послідовності із номера- ми 1, 2, 4, 8 тощо мають значення менше, ніж k?

31.Дано натуральне число n, дійсне число k та послідовність дійсних чисел a1, a2, …, an. Знайти у заданій послідовності таке число, котре якомога наближене до числа k.

32.Дано натуральне число n та дійсні числа a1, a2, …, an. Обчислити

P = (1 + an )(1 + an )K(1 + an ).

1 2 n

33.Ввести довільну послідовність символів. Визначити у заданій послідов- ності кількість символів, котрі належать до будь-якої абетки.

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

1. Що таке послідовність даних?

2. Яким чином обробляються послідовності?

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

4. Що таке кодова таблиця ASCII?

5. Яке призначення мають керуючі символи? Які їхні коди?

6. Як оголошуються та використовуються у програмі С/С++ змінні си- мвольного типу?

7. Що означають та як застосовуються керуючі послідовності С/С++?

8. Коли і як застосовуються макроси класифікації символів С/С++?

9. Які стандартні функції С/С++ можуть бути застосовані до даних си- мвольного типу?


 

 

10. Лабораторна робота №8. Розробка функцій користувача

 

 

Мета роботи:ознайомлення з означенням і основними характерис- тиками функцій мови; засвоєння основних прийомів використання в про- грамах користувацьких функцій; набуття навичок написання структурова- них програм C/C++.

 

 

Теоретичні основи.

Функції є самостійними, логічно завершеними одиницями програми,

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

Кожна С-програма містить як мінімум одну функцію, а саме функ- цію main(), та може використовувати інші, наприклад, бібліотечні функції. Для розв’язку у програмі окремої самостійної задачі бажано розробити для неї й окрему функцію (так звану функцію користувача).

Для використання в С-програмі функції користувача її необхідно:

– оголосити;

– визначити (описати);

– викликати.

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

 

 

тип Ім’я_функції (список_параметрів);

Таке оголошення називається прототипом функції, наприклад: float Cube(float x);

int Fun(float y,int z);

void F1(int, double); void F2(void);

 

 

Тип функції вказує тип значення, що повертається функцією в про- граму. Зазвичай, це один з числових типів (int, float тощо), рядок або вказі- вник на більш складний тип мови. Іноді функція взагалі не повертаю ре- зультату. Така функція має тип void.

Ім’я функції призначене для її ідентифікації у програмі і має бути за- писане за правилами побудови ідентифікаторів мови. Бажано аби ім’я фу- нкції відображувало її призначення.

Списком формальних параметрів позначаються вхідні дані, значення


 

 

яких передаються функції під час виклику у вигляді фактичних параметрів (аргументів). Кількість, черговість та типи параметрів функції має бути уз- годжено з оператором виклику функції у програмі. Для кожного з параме- трів необхідно вказати тип, навіть коли типи послідовних параметрів збі- гаються. Типи параметрів функції можуть бути довільними типами мови. Параметром функції, що не опрацьовує жодних вхідних значень, зазвичай виступає ключове слово void.

Як правило прототип функції цілком збігається з її заголовком у ви- значенні, проте імена параметрів у прототипі не мають ніякого значення. Їх взагалі можна не вказувати, зазначивши лише тип.

Визначення функцій (їх описи) виконуються після оголошення про- тотипів. Рекомендується такі визначення розташовувати після функції main().

Опис функції починається з заголовка, який містить тип результату

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

Вміст самої функції (її тіло) обмежується фігурними дужками, на кшталт функції main(), між якими можна оголошувати змінні, викликати інші функції, виконувати оператори тощо. Не дозволяється у функції ство- рювати внутрішні функції.

Додаткові змінні, що можуть бути оголошені у функції, називаються локальними або автоматичними і зберігаються у стеку, тобто є доступними лише у даній функції під час її роботи. Такі змінні рекомендується розта- шовувати перед першим оператором функції.

Функція завершує своє виконання або коли досягнуто її кінця (вико- нано усі оператори), або завдяки оператору return. Типізовані функції

обов’язково мають містити хоча б один оператор return, одразу за яким за- значається відповідне значення, що повертається цією функцією у програ- му. Лише void-функції можуть використовувати оператор return без завер- шального значення, або зовсім його не містити.

Приклад опису функції, що обчислює третю степінь переданого їй аргументу:

 

 

float Cube(float x)

{

return x*x*x;

}

 

Звертання до функції у необхідному місці програми відбувається за допомогою оператора виклику – вказується ім’я функції та перелічуються у круглих дужках її фактичні параметри (аргументи). Якщо функція повер- тає результат, то її виклик можна використовувати у виразах як звичайний


 

 

операнд, тип якого збігається з типом значення функції. Окрім того, ви- клик такої функції можна здійснити автономно, тобто через окремий опе- ратор. У такому разі значення, що повертає функція, ігнорується. Виклик void-функції здійснюється виключно автономно.

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

Приклади виклику функцій:

 

 

d=a*a+Cube(b)/3; F1(x1,x2);

printf(″Result=%f″,Cube(a+b));

 

 

У першому прикладі обчислюється значення змінної d за формулою: d=a2+b3/3. Для визначення кубу змінної b застосовано виклик функції Cube(b), опис якої показано раніше за текстом. Виклик даної функції пере- дає їй аргумент b через фактичний параметр x. Функція обчислює третю степінь параметра x і повертає її за допомогою оператора return у вираз програми у якості результату.

У другому прикладі здійснюється виклик функції, яка отримує два параметра x1 і x2 та, скоріш за все, не повертає жодного значення, тобто має тип void.

Третій приклад демонструє виклик раніше розглянутої функції для обчислення третьої степені суми двох дійсних чисел у якості аргументу іншої функції, у даному разі – printf().

Оператори виклику функцій можуть розташовуватись як у межах функції main(), так і у межах інших функцій.

Локальні змінні та формальні параметри функцій запам’ятовуються у стеку. Область дії таких змінних розповсюджується лише на дану функ- цію і після завершення функцій їх значення стають невідомими. У стеку запам’ятовуються також адреси повернення з функцій

На відміну від локальних, глобальні змінні запам’ятовуються у сег- менті даних програми і доступні з будь-якої її функції. Використання гло- бальних змінних може бути корисним для оголошення великих структур даних з метою економії стекової пам’яті, але звертання у функціях до гло-

бальних змінних програми порушує засади структурного програмування і може призвести до помилок, які дуже складно викрити та виправити.

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


 

 

називається рекурсивною. Наприклад, обчислення факторіала числа n (n!=1∙2∙3∙…∙n) дуже зручно виконувати за допомогою рекурсивної функції:

 

 

double Factorial(int n)

{

if(n>1) return n*Factorial(n–1); return 1;

}

 

Головною вимогою до рекурсивних функцій є необхідність забезпе- чення коректного виходу з них, аби не призвести до переповнення стеку і

«зависанню» системи.

Передача у функції масивів, рядків та більш складних структур да- них має певні особливості та потребує застосування спеціальних прийомів

програмування та частково розглянуто у відповідних наступних роботах.

 

Приклад завдання 8.1:

Дано дійсні числа a, b, c, d, f, що ви- b

значають сторони та g, h, що визначають діа- a g

гоналі п’ятикутника (рис. 8.1). Визначити

функцію обчислення площі трикутника за c

його трьома сторонами та за допомогою неї h

обчислити загальну площу заданого

п’ятикутника. Розміри сторін та діагоналей f d

п’ятикутника ввести двома окремими рядка-

ми чисел через пробіл. Рисунок 8.1 – До завдання 8.1

 

 

Розв’язок:

/* 8.1 */

#include <stdio.h>

#include <math.h>

float Triangle(float x,float y,float z); main()

{

float a,b,c,d,f,g,h; printf("Sides a,b,c,d,f: ");

scanf("%f%f%f%f%f",&a,&b,&c,&d,&f); printf("Diagonals g,h: ");

scanf("%f%f",&g,&h); printf("Area of the poligon=%f",

Triangle(a,b,g)+Triangle(g,c,h)+Triangle(h,d,f)); return 0;

}


 

 

float Triangle(float x,float y,float z)

{

float p; p=0.5*(x+y+z);

return sqrt(p*(p-x)*(p-y)*(p-z));

}

 

Результати роботи:

 


Завдання:

1.Дано дійсні числа a, b і c. Визначити функцію


 

 

max( x, y)


 

 

знаходження бі-


 

льшого з двох чисел та обчислити


 

b max 5 (a3 ,b) + c2 c


 

max(a + c,b) .


2.Дано натуральні числа a, b і c. Визначити функцію


НСД (x, y)


знахо-


дження найбільшого спільного дільника для двох довільних чисел та об-


числити


НСД 3 (a + c,b2 ) + НСД 2 (b,c) - НСД (ab, ac) × НСД (a + b + c,b2c) .


Рекомендовано застосування алгоритму Евкліда.

3.На площині задано n точок з дійсними координатами (x1,y1), (x2,y2), … (xn,yn). З’ясувати, яка з них ближча до початку координат, визначивши відповідну функцію. Кожну пару координат точок ввести через пробіл.


4.Дано дійсні числа a, b і c. Визначити функцію


min( x, y)


знаходження


 

меншого з двох чисел та знайти більше серед

min2 (ab, c3 ) .


min3 (a2 ,b + c) та


5.Простим називається число, що має тільки два дільники – саме число й одиницю. Дано натуральне число n та послідовність натуральних чисел a1, a2, …, an. Визначити функцію ідентифікації простого числа та за до- помогою неї знайти середнє арифметичне простих чисел – членів зада- ної послідовності.

6.Дано три трикутника зі сторонами a1, b1, c1; a2, b2, c2 та a3, b3, c3. Визначи- ти функцію ідентифікації прямокутного трикутника та за допомогою неї обчислити загальну площу заданих прямокутних трикутників (якщо такі

є). Числа в кожному з наборів сторін трикутника ввести через пробіл.

7.Дано натуральне число n та послідовність натуральних чисел a1, a2, …, an. Визначити функцію ідентифікації парного/непарного числа та за до- помогою неї з’ясувати, чи є парним числом сума непарних чисел – чле- нів заданої послідовності.


 

 

8.Дано натуральні числа n і x та послідовність генерованих натуральних чисел a1, a2, …, an(ai=0…x). Визначити функцію обчислення суми цифр довільного натурального числа та за допомогою неї з’ясувати, який з членів генерованої послідовності має найбільшу таку суму.

9.На площині задано три точки з дійсними координатами (x1,y1), (x2,y2), та (x3,y3). Знайти площу заданого зазначеними координатами трикутника, визначивши функцію розрахунку довжини його сторін. Кожну пару ко- ординат точок ввести через пробіл.

10.На площині задано n точок з дійсними ненульовими координатами (x1,y1), (x2,y2), … (xn,yn). Знайти номери координатних чвертей розташу- вання зазначених точок, визначивши відповідну функцію. Кожну пару координат точок ввести через пробіл.

11.Дано натуральні числа n і x та послідовність генерованих натуральних чисел a1, a2, …, an(ai=0…x). Визначити функцію обчислення кількості цифр довільного натурального числа та за допомогою неї з’ясувати,

який з членів генерованої послідовності має найменшу таку кількість.


12.Дано цілі числа a, b і c (a<b<c). Визначити функцію


Sum(x, y)


знахо-


дження суми всіх цілих чисел від x до y включно та обчислити


Sum3 (a,b) + 3Sum2 (b,2c) - ab5 Sum(ab,bc)


Sum(a + b,b2 + c) .


13.Дано дійсні числа a, b, c (a<b<c). Визначити функцію


Sum(x, y, h)


знахо-


дження суми всіх чисел від x до y включно з кроком h та обчислити


ab3Sum5 (a,b, a b) + 2c2 Sum3 (b,3c, a


4c) - 3


Sum(ab,bc, a


(b + c))

.


abc


Sum(2b - a,b2 + c, a 3)


14.Два натуральних числа називаються «дружніми», якщо кожне з них до- рівнює сумі дільників іншого за винятком самого числа. Дано натураль- ні числа a і b. Визначити функцію обчислення суми дільників довільного натурального числа та за допомогою неї з’ясувати, чи є задані числа дружніми. Приклади пар дружніх чисел: 220 і 284, 1184 і 1210, 2620 і

2924, 5020 і 5564, …

15.Дано ненульове дійсне число x та n кругів, радіус яких задано послідов- ністю генерованих дійсних чисел a1, a2, …, an (0<aix). Визначити функ- цію обчислення площі круга за заданим радіусом та за допомогою неї з’ясувати, який з заданих кругів займає найбільшу поверхню.

16.Дано дійсні числа a і b. Знайти: a+b, ab, ab та a/b, визначивши функцію


Calc(x, y,op)


для виконання відповідної операції op над двома довіль-


ними числами. Операції задати відповідними символьними константами.

17.Дано натуральні числа n, k, m та послідовність натуральних чисел a1, a2,

…, an. Визначити функцію з’ясування кратності/некратності натураль-

них чисел та за допомогою неї порахувати кількість членів заданої пос-

лідовності, кратних k і некратних m.

18.Дано генеровані ненульові натуральні числа a, b і c. Визначити функцію знаходження останньої цифри довільного натурального числа та за до- помогою неї обчислити добуток останніх цифр генерованих чисел.


 

 

19.Дано ненульові натуральні числа a, b і c. Визначити функцію знахо- дження першої цифри довільного натурального числа та за допомогою неї обчислити суму перших цифр заданих чисел.


20. Дано дійсне число a. Визначити функцію


MyExp(x,e )


знаходження при-


 

близного значення


ex= 1 + x + x2


2! + x3


3! + ...


 

з точністю e та за допо-


могою неї обчислити значення ea


 

для


e = 10-k


 

(k=1, 2, …, 5). Порівняти


отримані значення з результатом застосування відповідної бібліотечної

функції.


21. Дано дійсне число a. Визначити функцію


MySin(x, e )


знаходження


 

приблизного значення


sin(x) = x - x3


3! + x5


5! - ...


 

з точністю e та за допо-


 

могою неї обчислити значення


 

sin(a)


 

для e


= 10-k


 

(k=1, 2, …, 5).


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


22. Дано дійсне число a. Визначити функцію


MyCos(x, e )


знаходження


 

приблизного значення


cos(x) = 1 - x2


2! + x4


 

4! - ...


 

з точністю e та за допо-


 

могою неї обчислити значення


 

cos(a)


для e


= 10-k


 

(k=1, 2, …, 5).


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


23. Дано дійсне число a. Визначити функцію


Arctg(x, k )


знаходження приб-


 

лизного значення


arctg(x) = x - x3


3 + x5


5 - ...


 

з урахуванням k перших


членів заданого ряду та за допомогою неї обчислити значення


arctg(a) .


Кількість значущих членів ряду ввести з клавіатури. Порівняти отримане значення з результатом застосування відповідної бібліотечної функції.

 


24. Дано дійсне число a. Визначити функцію


Ln(x, k )


знаходження прибли-


 

зного значення


ln(1 + x) = x - x2


2 + x3


3 - ...


 

з урахуванням k перших


членів заданого ряду та за допомогою неї обчислити значення


ln(a) . Кі-


лькість значущих членів ряду ввести з клавіатури. Порівняти отримане значення з результатом застосування відповідної бібліотечної функції.

25. Дано ненульове дійсне число x, що задає радіус певного круга. Знайти площу даного круга, визначивши відповідну функцію, в якій число π об-


числюється за допомогою ряду Лейбніца:


π4 = 1 -1 3 + 1 5 - ...


з зада-


ною точністю e. Порівняти отримане значення з результатом застосу- вання відповідної бібліотечної символічної константи для π.

26.Два трикутники задані своїми сторонами a, b, c. Обчислити площі трикутників за формулою Герона і визначити, який з трикутників має більшу площу.

27.Два трикутники задані координатами своїх вершин a, b, c. Обчислити площі трикутників, не використовуючи формули Герона, і визначити, який з трикутників має більшу площу.

28.Футболіст ударом ноги посилає м’яч вертикально вверх з висоти 1м з початковою швидкістю 20 м/с. На якій висоті буде м’яч через 1; 3; 4 с?

29.Футболіст ударом ноги посилає м’яч вертикально вверх з висоти 1м з початковою швидкістю 20 м/с. Коли м’яч буде на висоті 5; 10 м?

30.. Футболіст ударом ноги посилає м’яч вертикально вверх з висоти 1м з пoчатковою швидкістю 20 м/с. Визначити з точністю до 0,25с, коли і на якій максимальній висоті опиниться м’яч за 4 с?

31.Дано дійсні числа S, T. Обчислити A = F(T,–2S,1,17)+F(2.2,T,S–T) де F(A,B,C) = (2A–B–sinC)/(5+C). Обчислення F оформити в виді функції.

32.Дано дійсні числа S,T. Обчислити B = G(1,2,S)+G(T,S)–G(2S–1,ST), де G(A,B) = (A+B)/(A+2AB+3B+4). Обчислення G оформити в виді функції.

33.Дано дійсні числа S, T. Обчислити F = H(1S,T)+MAX(H(S–T,ST)––H(1,1)), де H(A,B) = A/(1+B)+B/(1+A)–(A–B). Обчислення H оформити в виді функції.

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

1. Що таке функція та яке її призначення в програмі?

2. Які види функцій може містити програма С/С++?

3. Що необхідно для використання в програмі функції користувача?

4. Що таке прототип, формальні та фактичні параметри (аргументи) функції?

5. Яку структуру має функція користувача, та як здійснюється в про- грамі її виклик?

6. Який тип можуть мати функції та їх параметри? Що таке void- функції та void-параметри?

7. Яка функція називається рекурсивною та які вимоги для її викорис- тання в програмі?

 

 


 

 

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


Просмотров 1513

Эта страница нарушает авторские права




allrefrs.ru - 2021 год. Все права принадлежат их авторам!