Обектно-ориентирано програмиране Трета курсова задача (домашна работа) ВНИМАНИЕ: Тази курсова задача е разширение на първа курсова задача !!! ---------------------------------------------------------------------- Номерът на курсовата задача се получава като резултат от операцията "остатък от целочислено деление" в С++. Първият аргумент на операцията е факултетният номер на студента, а вторият аргумент е числото 26 (ф.н. % 26). Допълнението е създаване на шаблон-клас, който да работи поне със зададените типове данни и включване на система за обработка на изключения. При изпълнение на задачата, както е описана, се дават 5 точки. За останалите 5 точки (до максимум 10) е нужно да се демонстрират още: - използване на шаблон-функции; - нетипизирани параметри на шаблон; - използване на операция new с обработка на изключение; - "развиване на стека" при обработка на изключение; - обработка поне на 2 изключения; - обработка на неочаквани изключения; - пренасочване на обработката на изключението. За всяка демонстрирана техника от списъка се дава по още 1 точка (: максимум още 5, разбира се :) За лоша демонстрация и/или незнание по текста на програмата се отнемат до 5 точки. --------------------------------------------------------------------------- Задачи: 0 Обект: окръжност в равнината, зададена с център и радиус. Функция: пресечни точки на окръжността с координатните оси. Операция: събиране (+) - резултатът е най-малката окръжност, съдържаща двете дадени. Шаблон: тип на координати на точка и радиус (int,double) ОИ: отрицателен радиус 1 Обект: матрица 2х2 Функция: детерминантата на матрицата Операция: сума (+) на матрици Шаблон: тип на числата на матрицата (int,double) ОИ: нулева матрица и невалидни индекси 2 Обект: матрица 2х3 Функция: ранга на матрицата Операция: сума (+) на матрици Шаблон: тип на числата на матрицата (int,double) ОИ: нулева матрица и невалидни индекси 3 Обект: права в равнината, зададена с точка и ъгъл, който сключва с абсцисната ос Функция: пресечната точка с абсцисната ос Операция: въртене (*) на ъгъл 90 градуса около зададена точка. Шаблон: тип на координати на точка и ъгъл (int,double) ОИ: отрицателен ъгъл 4 Обект: проста дроб Функция: проверка дали дробта не е цяло число Операция: събиране на дроби Шаблон: тип на числителя и знаменателя (int,char,long) ОИ: нулев знаменател 5 Обект: точка в пространството Функция: разстоянието от точката до началото на координатната система Операция: унарен минус - дава симетрична относно началото точка Шаблон: тип на координати на точка (int,double) ОИ: точка (0,0) 6 Обект: точка в равнината Функция: разстоянието от точката до началото на координатната система Операция: увеличаване с 1 (++) премества точката с вектор (1,1) Шаблон: тип на координати на точка (int,double) ОИ: точка (0,0) 7 Обект: сила в равнината, зададена с приложна точка, посока и големина Функция: промяна на посоката на силата, като се завърта на зададен ъгъл Операция: добавяне (+=) към една сила друга сила по правилото на успоредника Шаблон: тип на числовите данни (int,double) ОИ: големина (0,0) и ненулева посока 8 Обект: книга - име на автор, заглавие на книга, име на издателство и година на издаване Функция: връща true ако книгата е издадена преди зададена година Операция: сравнение за равенство (==) на две книги Шаблон: тип на низовете (string, char*) ОИ: невалидна година на издаване (>2002 или <Гутенберг) 9 Обект: студент - име, презиме и фамилия, фак. номер, 5 оценки Функция: изчисляване на среден успех Операция: сравнение (>) по среден успех Шаблон: тип на низовете (string, char*) ОИ: невалидни оценки 10 Обект: вектор в равнината Функция: големина на вектор Операция: умножение на вектор с число (*) Шаблон: тип на координати на вектор (int,double) ОИ: вектор (0,0) 11 Обект: вектор в пространството Функция: големина на вектор Операция: сума (+) на вектори Шаблон: тип на координати на вектор (int,double) ОИ: вектор (0,0) 12 Обект: избирател - име, презиме и фамилия, ЕГН, избирателна секция Функция: проверка дали човекът има право да гласува Операция: сравнение за равенство (==) Шаблон: тип на низовете (string, char*) ОИ: невалидно ЕГН, виж: http://www.geocities.com/TimesSquare/Lair/7174/egn.html http://gyuvet.ch/dadzibao/mat/esgraon.htm 13 Обект: автомобил - марка, цвят, обем на двигател, цена Функция: при зададено число, връща разликата между това число и цената на автомобила Операция: сравнение (>) според обема на двигателя Шаблон: тип на низовете (string, char*) ОИ: невалидни цени 14 Обект: права в равнината, зададена с 2 точки Функция: разстояние на правата до началото на координатната система Операция: сравняване за различие (!=) на две прави Шаблон: тип на координати на точка (int,double) ОИ: двете точки при задаване на правата съвпадат 15 Обект: отсечка в равнината, зададена с 2 точки Функция: дължината на отсечката Операция: проверка (&) дали 2 отсечки се пресичат Шаблон: тип на координати на точка (int,double) ОИ: двете точки при задаване на отсечката съвпадат 16 Обект: отсечка в пространството, зададена с 2 точки Функция: дължината на отсечката Операция: проверка (^) дали отсечката пресича някоя координатна равнина Шаблон: тип на координати на точка (int,double) ОИ: двете точки при задаване на отсечката съвпадат 17 Обект: полином от 3-та степен Функция: пресмятане на стойност на полинома при зададено x Операция: сума (+) на два полинома Шаблон: тип на коефициентите на полинома(int,double) ОИ: 4-те коефициента на полинома са нули 18 Обект: матрица nxn с елементи 0 и 1 Функция: брой на нулите в матрицата Операция: поелементен and (&) Шаблон: тип на числата на матрицата (int,char,bool) ОИ: нулева матрица и невалидни индекси 19 Обект: n-мерен вектор с елементи 0 и 1 Функция: брой на двойките 01 във вектора Операция: поелементно отрицание (~) Шаблон: тип на елементите на вектора (int,char,long,bool) ОИ: n>0 и невалиден индекс 20 Обект: дата - ден, месец, година Функция: колко дни има между две дати Операция: добавяне на дни към дата (+=) Шаблон: тип на елементите на датата (int,char,long,bool) ОИ: невалидна дата 21 Обект: права в пространството, зададена от 2 точки Функция: дава симетрична относно началото права Операция: проверка за успоредност (||) Шаблон: тип на координати на точка (int,double) ОИ: двете точки при задаване на правата съвпадат 22 Обект: компютър - процесор, памет, HDD Функция: при зададени 3 числа - MHz, MB и GB връща true, ако характеристиките на компютъра са такива или по-добри Операция: сравнение (>=) по памет Шаблон: тип на числовите данни (int,double,long,char) ОИ: невалидни числови данни 23 Обект: работник - име, часова надница, брой отработени часове за месеца Функция: връща месечната заплата Операция: повишаване на часовата надница (+=) със зададен процент Шаблон: тип на числовите данни (int,double) и на низове (string, char*) ОИ: невалидни числови данни: брой отработени часове за месеца < 0 и процент <=0 или >100 24 Обект: самолетен полет - дата, час, място, брой пътници Функция: проверява дали полета е след зададена дата Операция: сравняване на два полета (<) по брой пътници Шаблон: тип на числовите данни (int,long) ОИ: невалидна дата 25 Обект: комплексно число Функция: модул на комплексно число Операция: събиране на комплексни числа Шаблон: тип на реална и имагинерна части на числото (int,double) ОИ: числото (0,0) ---------------------------------------------------------------------------