Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru