last_wish
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: #include <iostream> #include <cstdarg> /* Степенной полином, представленный размерностью и динамическим массивом коэффициентов. Перегрузить операции сложения и вычитания с данным типом, оператор преобразования к типу long. */ class Polinom { public: Polinom(); Polinom(long razmernost, ...); ~Polinom(); Polinom operator+(Polinom& p2); Polinom operator-(Polinom& p2); operator long() { return rzm; }; void ShowKoefs(); private: double *koef; long rzm; }; Polinom::Polinom() { koef = NULL; rzm = 0; } Polinom::Polinom(long razmernost, ...) { va_list vl; rzm = razmernost; if (razmernost <= 0) { koef = NULL; rzm = 0; return; } koef = new double[razmernost]; va_start(vl, razmernost); for (int i = 0; i < razmernost; i++) koef[i] = va_arg(vl, double); va_end(vl); } Polinom::~Polinom() { if (koef) delete [] koef; } Polinom Polinom::operator+(Polinom& p2) { Polinom temp; if (p2.rzm > rzm) { temp.koef = new double[p2.rzm]; for (int i = 0; i < p2.rzm; i++) { if (i < rzm) temp.koef[i] = koef[i] + p2.koef[i]; else temp.koef[i] = p2.koef[i]; } temp.rzm; } else { temp.rzm = rzm; temp.koef = new double[rzm]; for (int i = 0; i < rzm; i++) temp.koef[i] = koef[i] + p2.koef[i]; } return temp; } Polinom Polinom::operator-(Polinom& p2) { Polinom temp; if (p2.rzm > rzm) { temp.koef = new double[p2.rzm]; for (int i = 0; i < p2.rzm; i++) { if (i < rzm) temp.koef[i] = koef[i] - p2.koef[i]; else temp.koef[i] = -p2.koef[i]; } temp.rzm; } else { temp.rzm = rzm; temp.koef = new double[rzm]; for (int i = 0; i < rzm; i++) temp.koef[i] = koef[i] - p2.koef[i]; } return temp; } void Polinom::ShowKoefs() { for (int i = 0; i < rzm; i++) std::cout << koef[i] << " "; std::cout << std::endl; } int main() { Polinom p2(3, 3.3, 2.0, 1.0); Polinom p1(4, 0.3, 0.5, 0.5, 2.0); p1.ShowKoefs(); p2.ShowKoefs(); Polinom p3 = p1 - p2; Polinom p4 = p1 + p2 + p3 - p1 - p1 - p1 - p1; p3.ShowKoefs(); p4.ShowKoefs(); std::cout << (long)p4 << std::endl; return 0; } |
| Всего записей: 109 | Зарегистр. 26-10-2006 | Отправлено: 23:11 30-03-2008 | Исправлено: last_wish, 23:53 30-03-2008 |
|