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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2023, 20:35   #1
Ghost111
 
Регистрация: 09.02.2023
Сообщений: 7
Лампочка Реализовать класс Polynom на языке C++

Прошу помощи - нужно доделать код, который я попытался написать. Доделать его нужно согласно заданию: "Разработать класс «Полином» от одной переменной.
Полином задается степенью и массивом коэффициентов. Реализовать
методы для вычисления значения полинома, сложения, вычитания и
умножения полиномов. Перегрузить операции сложения, вычитания,
умножения, присваивания для данного класса. Полином от одной переменной есть конечная формальная сумма вида: C0 + C1 * (x^1) + ... + Cn * (x^n)"

Вот код, собственно:
Код:
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;

class Polynom
{
	public:
		Polynom (vector <double>& koefs);

	double operator() (double x) const
	{
		double otvet = 0;
		for (int i = 0; i < koefs.size(); i++)
		{
			otvet += koefs[i] * pow(x, i);
		}
		return otvet;
	}
	
	Polynom operator+ (const Polynom& drugie) const
	{
		int razmer = max(koefs.size(), drugie.koefs.size());
		vector <double> otvet(razmer, 0);
		for (int i = 0; i < razmer; i++) 
		{
			if (i < koefs.size())
			{
				otvet[i] += koefs[i];
			}
			if (i < drugie.koefs.size())
			{
				otvet[i] += drugie.koefs[i];
			}
		}
		return Polynom(otvet);
	}
	
	Polynom operator- (const Polynom& drugie) const
	{
		int razmer = max(koefs.size(), drugie.koefs.size());
		vector <double> otvet(razmer, 0);
		for (int i = 0; i < razmer; i++)
		{
			if (i < koefs.size())
			{
				otvet[i] += koefs[i];
			}
			if (i < drugie.koefs.size())
			{
				otvet[i] -= drugie.koefs[i];
			}
		}
		return Polynom(otvet);
	}
	
	Polynom operator* (const Polynom& drugie) const
	{
		int razmer = koefs.size() + drugie.koefs.size() - 1;
		vector <double> otvet(razmer, 0);
		for (int i = 0; i < koefs.size(); i++)
		{
			for (int j = 0; j < drugie.koefs.size(); j++)
			{
				otvet[i + j] += koefs[i] * drugie.koefs[j];
			}
		}
		return Polynom(otvet);
	}
	
	Polynom& operator+= (const Polynom& drugie)
	{
		*this = *this + drugie;
		return *this;
	}
	
	Polynom& operator-= (const Polynom& drugie)
	{
		*this = *this - drugie;
		return *this;
	}
	
	Polynom& operator*= (const Polynom& drugie)
	{
		*this = *this * drugie;
		return *this;
	}
	
	friend ostream& operator<< (ostream& stream, const Polynom& p)
	{
		for (int i = p.koefs.size() - 1; i >= 0; i--)
		{
			if (p.koefs[i] == 0) continue;	
			if (i != p.koefs.size() - 1)
			{
				if (p.koefs[i] >= 0)
				{
					stream << "+" << p.koefs[i];
				}
				else
				{
					stream << "-" << abs(p.koefs[i]);
				}
			}
			else
			{
				stream << p.koefs[i];
			}
			if (i > 0)
			{
				stream << "x^" << i;
			}
		}
		return stream;
	}
	
	private:
		vector <double> koefs;
};

int main()
{
       return 0;
}
Ошибок нет, то есть прога запускается. Только код в общем без std сделать (проще код читается так). А в int main надо добавить вывод суммы, разности, умножения полиномов и вывод значения полинома. Сделать оператор присваивания и тоже вывести через main. Я просто пробовал в main это всё записывать (выводы значений), но компилятор тогда ругается, поэтому не могу догнать, что нужно подправить, чтобы заданию код соответствовал. Помогите, пожалуйста, люди добрые. Буду очень благодарен))).

Последний раз редактировалось Ghost111; 11.02.2023 в 07:57.
Ghost111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализовать класс. REZR C# (си шарп) 0 18.05.2022 13:28
Реализовать класс для матриц. В этом классе реализовать интерфейс, содержащий методы для выполнения Wexley Помощь студентам 0 07.12.2016 12:13
Реализовать класс. Neotwalker Помощь студентам 0 06.06.2016 19:28
Реализовать класс. Neotwalker Помощь студентам 0 01.03.2016 16:21
Реализовать класс с именем "Stroki". Реализовать в нём возможность <Поиска и замены фрагмента> Olgazag C# (си шарп) 0 12.12.2013 11:09