Перевантаження функцій

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра СКС

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Об’єктно-орієнтоване програмування
Група:
КІ-15

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет "Львівська політехніка" Кафедра СКС Звіт З лабораторної роботи №2 з дисципліни: "Програмування ч. 2 (Об'єктно-орієнтоване програмування)" на тему: "Перевантаження функцій" Мета роботи: Використовуючи перевантаження функцій, написати та продемонструвати функцію func, яка повертає середнє арифметичне елементів послідовності між мінімальним та максимальним елементами для масивів цілих і дробових значень окремо. Короткі теоретичні відомості С++ дозволяє визначати декілька функцій з одним і тим же іменем, якщо дані функції мають різні набори параметрів (принаймні різні типи параметрів). Нехай оголошені наступні функції: іnt func(іnt); іnt func(int, int); іnt func(double); При виклику функції з ім’ям func спершу компілятор намагатиметься знайти функцію, формальні аргументи якої відповідають фактичним аргументам без усяких перетворень типів або з використанням тільки неминучих перетворень - наприклад, імені масиву до покажчика або значення змінної до константи або навпаки. Якщо відповідна функція не знайдена, то здійснюється пошук такої функції, щоб для відповідності формальних і фактичних аргументів досить було використати тільки такі стандартні перетворення, що не спричиняють перетворень цілих типів до типів з плаваючою крапкою і навпаки. При цьому підбирається функція, для якої число таких перетворень було б мінімальним. int i = func(2.5, 3.7); // Викличе func(int, int) int i = func(123L); // Викличе func(int) Третім етапом є пошук такої функції, для виклику якої досить здійснити будь-які стандартні перетворення аргументів (і знову так, щоб цих перетворень було якнайменше). Далі здійснюється пошук функції, для якої аргументи можна одержати за допомогою всіх перетворень, розглянутих до цього, а також перетворень типів, визначених самим програмістом. Якщо й у цьому випадку єдина потрібна функція не знайдена, то на останньому етапі компілятор пробує знайти відповідність з урахуванням списку невизначених аргументів. Якщо компілятор не знайде ні однієї підходящої функції, тоді буде виведене повідомлення про помилку. Повний лістінг виконаної програми Перевірено на дієздатність у Microsoft Visual C++ 2008 Express Edition // Кафедра СКС // ООП, Лабораторна робота № 2 // Виконав студент групи КІ-15 // Дунай Андрій // 12 варіант #include <iostream> // необхідна для керування потоками cin/cout #include <conio.h> // необхідна для використання функції _getch() using namespace std; float average(int integers[10]) { int a, i, min, minId, max, maxId; minId=0; maxId=0; for(i=1,min=integers[0],max=integers[0];i<10;i++) { if(integers[i]<min) { min=integers[i]; minId=i; } if(integers[i]>max) { max=integers[i]; maxId=i; } } if(max<min) swap(minId, maxId); a=0; for(i=minId+1;i<maxId;i++) a=a+integers[i]; return (float)a/(maxId-minId-1); } float average(float floats[10]) { int i, minId, maxId; float a, min, max; minId=0; maxId=0; for(i=1,min=floats[0],max=floats[0];i<10;i++) { if(floats[i]<min) { min=floats[i]; minId=i; } if(floats[i]>max) { max=floats[i]; maxId=i; } } //if(max<min) swap(minId, maxId); a=0; for(i=minId+1;i<maxId;i++) a=a+floats[i]; /* cout << floats[i] << " ";*/ return a/(maxId-minId-1); return 0; } int main(int argc, char* argv[]) { int i; int integers[10]; float floats[10]; float nAverage, fAverage; cout << "This program calculates the average arithmetic\n"; cout << "of numbers between minimal and maximal of\n"; cout << "entered array values.\n\n"; for(i=0;i<10;i++) { cout << "Please enter INT " << i+1 << " of 10:"; cin >> integers[i]; } for(i=0;i<10;i++) { cout << "Please enter FLOAT " << i+1 << " of 10:"; cin >> floats[i]; } nAverage=average(integers); fAverage=average(floats); cout << "The average of integers is " << nAverage << "\n"; cout << "The average of floats is " << fAverage << "\n"; _getch(); return 0; } Висновок Я навчився реалізувати перевантаження функцій у програмах на С++ та дослідив багато помилок протягом створення вище проілюстрованого коду. Підпис викладача
Антиботан аватар за замовчуванням

01.12.2012 19:12-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!