Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2023, 09:39   #1
Ghost111
 
Регистрация: 09.02.2023
Сообщений: 7
Лампочка Всё тот же класс "Полином"

Доброго времени суток. Опираясь на различные источники в интернете, я нашёл программу, которую я пытался дополнить и модифицировать. В итоге работает всё, но нет единственной функции - подсчёта значения полинома от переменной x.

Вот код:

Код:
#include <iostream>
#include <iomanip>
#include <algorithm>
using namespace std;

class Polynom
{
	private:
		int s; 
    	double *koef; 
    	
	public:
    	Polynom();
    	Polynom(int as);
    	Polynom(const Polynom &); 
    	~Polynom();
	    int gets(); 
	    double getkoef(int); 
	    Polynom operator()(const Polynom &);
	    Polynom operator+(const Polynom &);  
	    Polynom operator-(const Polynom &);   
	    Polynom operator*(const Polynom &);
	    Polynom operator=(const Polynom &); 
	    friend ostream &operator<< (ostream &stream, const Polynom &c); 
	    friend istream &operator >> (istream &stream, Polynom &c); 
	    double &operator()(int i)
	    {
	        return koef[i];
	    }
	};
	
Polynom::Polynom() 
{
    koef = 0;
}

Polynom::~Polynom()
{
    delete[] koef;
}

Polynom::Polynom(int as)
{
    int i;
    s = as;
    koef = new double[s + 1];
    for (i = 0; i <= s; i++)
    {
        koef[i] = 0;
    }
}

Polynom::Polynom(const Polynom &f)
{
    s = f.s;
    koef = new double[s + 1];
    for (int i = 0; i <= s; i++)
    {
    	koef[i] = f.koef[i];
	}       
}

int Polynom::gets() 
{
    return s;
}

double Polynom::getkoef(int i) 
{
    if (i <= s)
    {
    	return koef[i];
	}   
    else
    {
    	return 0.0;
	}       
}

Polynom Polynom::operator+(const Polynom &p)
{
    int i;
    if (s >= p.s)
    {
        Polynom p1 = *this;
        for (i = 0; i <= s; i++)
        {
        	p1.koef[i] = koef[i] + p.koef[i];
		}   
        return p1;
    }
    else
    {
        Polynom p1(p.s);
        for (i = 0; i <= s; i++)
        {
        	p1.koef[i] = p.koef[i] + koef[i];	
		}         
        return p1;
    }
}

Polynom Polynom::operator-(const Polynom &p) 
{
    int i;
    if (s >= p.s)
    {
        Polynom p2 = *this;
        for (i = 0; i <= p.s; i++)
        {
        	p2.koef[i] = koef[i] - p.koef[i];
		}
        return p2;
    }
    else
    {
        Polynom p2(p.s);
        for (i = 0; i <= s; i++)
        {
        	p2.koef[i] = -p.koef[i] + koef[i];
		} 
        for (i = s + 1; i <= p.s; i++)
        {
        	p2.koef[i] = -p.koef[i];	
		}   
        return p2;
    }
}

Polynom Polynom::operator*(const Polynom &p)
{
    int i, j;
    Polynom p3(s + p.s);
    for (i = 0; i <= s; i++)
    {
    	for (j = 0; j <= p.s; j++)
    	{
    		p3.koef[i + j] += koef[i] * p.koef[j];
		}
	}      
    return p3;
}

Polynom Polynom::operator = (const Polynom &p) 
{
	s = p.s;
	delete[] koef;
	koef = new double[s + 1];
	for (int i = 0; i <= s; i++)
	{
	    koef[i] = p.koef[i];
	}      
    return *this;		
}

istream &operator >> (istream &stream, Polynom &c)
{
    int i;
    for (i = 0; i <= c.s; i++)
    {
        stream >> c.koef[i];
    }
    return stream;
}

ostream &operator << (ostream &stream, const Polynom &c)
{
	int i, s = 0;
	for (i = 0; i <= c.s; i++)
	{
    	if (c.koef[i] != 0)
    	{
    		s++;	
		}    	
	}
	if (s != 0)
	{
	    if (c.koef[0] != 0)
	    {
	        stream << c.koef[0];
	    }
	    for (i = 1; i <= c.s; i++)
	    {
	        if (c.koef[i] < 0)
	        { 
	            if(c.koef[i] != -1)
	            {
	            	stream << c.koef[i] << "*X^" << i; 
				}  
	            else
	            {
	            	stream << " - " << "*X^" << i;
				}        
	        }
	        else
	        {
	            if (c.koef[i] != 0)
	            {
	                if(c.koef[i] != 1)
	                {
	                	stream << " + " << c.koef[i] << "*X^" << i;
					}
	                else
	                {
	                	stream << " + " << "*X^" << i;
					}      
	            }
	        }
	    }	
		s << '\n';
	}
	else
	{
	    stream << 0;
	}
	return stream;
}

int main()
{
    setlocale(LC_ALL, "");
    int n, m;
    double x = 2;
    cout << "Введите степень полинома p1: ";
    cin >> n;
    cout << "Введите степень полинома p2: ";
	cin >> m;
    Polynom p1(n), p2(m), ps, pr, pp;
    cout << "Введите коэффициенты полинома p1: " << endl;
    cin >> p1;
    cout << "Введите коэффициенты полинома p2: " << endl;
    cin >> p2;
    cout << "Полином p1: " << p1 << endl;
    cout << "Полином p2: " << p2 << endl;
    cout << "Сумма полиномов p1 и p2 = " << (ps = p1 + p2) << endl;
    cout << "Разность полиномов p1 и p2 = " << (pr = p1 - p2) << endl;
    cout << "Произведение полиномов p1 и p2 = " << (pp = p1 * p2) << endl;
    cout << "Присваивание: полином p2 = p1 = " << (p2 = p1) << endl;
    cout << "Значение полинома p1(x) = " << p1(x) << endl;
    
	return 0;
}
Кто знает, как её реализовать в данной программе, помогите пожалуйста!
Ghost111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" billiejean78 JavaScript, Ajax 1 03.09.2021 08:58
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" link90 Общие вопросы C/C++ 2 27.03.2016 12:34
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40