Да се реализира клас Complex
, представляващ комплексно число. Да се реализират нужните конструктори, селектори и мутатори. Да се реализират методи за намиране на модула, извеждане на числото във вида a + bi
и в тригонометричен вид. Да се предефинират следните оператори:
- operator+, operator-, operator*(const Complex&), operator/, operator^ - извършват съответните аритметични операции над 2 комплексни числа и връщат ново комплексно число - резултата от операциите
- operator+=, operator-=, operator*=, operator/=, operator^= - извършват съответните аритметични операции над 2 комплексни числа и записват резултата в първото число
- operator*(), operator double() - връщат модула на числото
- operator<, operator>, operator<=, operator>= - сравняват две комплексни числа по модула им
- operator==, operator!= - проверяват дали две комплексни числа са равни (две комплексни числа са равни, когато са равни едновременно реалните и имагинерните им части)
- operator<< - извежда комплексно число във вида
a + bi
- operator>> - въвежда комплексно число по дадена реална и имагинерна част
Да се реализира клас String
, представляващ символен низ с произволна дължина. Да се реализират нужните контруктори, селектори и мутатори. Да се реализират следните методи:
- empty - проверява дали низа е празен
- size - връща размера на низа
- copy - по подадена дестинация (друг низ) и брой, копира в дестинацията толкова символа, започващи от началото на низа, колкото е подадения брой
- substr - по подадена начална позиция и брой, връща подниз с начало началната позиция и толкова знака, колкото е подадения брой.
Освен това да се предефинират следните оператори:
- operator[] - връща знак по подадена позиция. Да се реализират константен и неконстантен вариант
- operator+= - конкатенира два низа или низ и знак и записва резултата в първия низ
- operator+ - прави същото като operator+=, но връща нов низ, съдържащ резултата
- operator<, operator>, operator<=, operator>=, operator==, operator!= - сравняват два низа лексикографски
- operator<< - извежда низ
- operator* - връща първия знак на низа
- operator char*() - връща низа като указател
Реализирайте operator>> за въвеждане на низ с произволна дължина до срещане на интервал или нов ред.
Да се реализира клас Polynomial
, представляващ полином от произволна степен. Полиномът да се представи като масив от коефициентите пред всяка степен. Да се реализират нужните контруктори, селектори и мутатори. Да се реализират методи за добавяне и премахване на коефициент. Да се предефинират следните оператори:
- operator() - по подадено число пресмята полинома
- operator[] - по подадена степен, връща коефициента пред тази степен
- operator+, operator- - съответно събират и изваждат два полинома и връщат нов полином, съдържащ резултата
- operator+=, operator-= - същите като operator+ и operator-, но записват резултата в първия полином
- operator*, operator/ - съответно умножават и делят полином с число и връщат нов полином, съдържащ резултата
- operator*=, operator/= - същите като operator* и operator/, но записват резултата в първия полином
- operator==, operator!= - проверяват дали два полинома са еднакви. Два полинома казваме, че са еднакви, ако единият може да се сведе до другия чрез умножение или деление на коефициентите с число. Пример: 5х + 7 = 10х + 14
- operator<< - извежда полинома във формат: anxn + an-1xn-1 + ... + a1x + a0, където а0, а1, ... , аn са коефициентите на полинома
Опитайте се да използвате функциите от по-висок ред map
и reduce
, където е възможно.
Направете operator*, operator*=, operator/, operator/= да работят с два полинома, вместо с полином и число. Разгледайте как може да се реализират operator% и operator%=