Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Описать класс "полином" - Для чего нужен конструктор по умолчанию? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ метод крамера http://www.cyberforum.ru/cpp-beginners/thread1001032.html
помогите, пожалуйста. Это решение СЛАУ методом Крамера, но не знаю как сделать так чтобы он выводил единственное решение и хотя бы одно решение когда корней много. помогите, если знаете,пожалуйста....
C++ Составить программу (без использования массивов) Составить программу (без использования массивов), в которой в числовую переменную N вводят ненулевые целые числа. Количество вводимых чисел заранее неизвестно. Определить и вывести сообщение о том,... http://www.cyberforum.ru/cpp-beginners/thread1001022.html
Работа со строками - обработка аргументов командной строки C++
Помогите реализовать. Буду очень благодарен. Если первый аргумент командной строки-опция-d, то распечатать введен далее текст без входящих в него цифр, а если указанная опция-r, распечатать...
C++ оператор постинкремента не компилируется
Добавил строку 21 после чего вся прога перестала компилироваться прога #include <string> #include <iostream> // для объекта cout using namespace std; #include<iomanip> //Этот файл...
C++ Не запускается, что не верно http://www.cyberforum.ru/cpp-beginners/thread1001003.html
В массиве содержащем не более 30 элементов (формат числа +ЦЦ), найти сумму элементов, абсолютная величина которых отличается от заданного числа не более, чем на 5 Среди остальных элементов найти...
C++ GetPrivateProfileString Не получается прочитать файл #include<windows.h> #include<iostream> using namespace std; int main() { CHAR a; GetPrivateProfileString("Name","My","",a,256,"C:\Scene.dat"); cout<<"a:... подробнее

Показать сообщение отдельно
Antonn
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 3

Описать класс "полином" - Для чего нужен конструктор по умолчанию? - C++

07.11.2013, 20:13. Просмотров 1128. Ответов 1
Метки (Все метки)

неоюходимо написать класс для работы с полиномами в нете нашел что-то поожее может кто-нибудь объяснить для чего нужен конструктор по умолчанию и для чего нужна метод givememory?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include <iostream>
#include "conio.h"
#include <algorithm>
#include "math.h"
class Polynom {
int n;
double *koef;
public:
Polynom(); //конструкторы
Polynom(int k);
Polynom(int k,double *mas);
Polynom(const Polynom&ob); //конструктор копирования
~Polynom(){delete[]koef;}
void GiveMemory(int k);
void SetPolynom(int k,double *mas);
void SetDegree(int k){n=k;}; //установить степень
void CalculateValue(double x); //вычислить значение
int GetDegree(){return n;}; //получить степень
double GetOneCoefficient(int i){return(koef[i]);};
Polynom operator+(Polynom ob); //перегрузка операторов
Polynom operator*(Polynom ob);
double& operator[](int i){return(koef[i]);}//перегрузка []
Polynom& operator= (const Polynom p) {
if(&p==this) return *this;
if(koef) delete [] koef;
n=p.n;
koef=new double [p.n+1];
for(int i=0;i<=p.n;i++)
koef[i]=p.koef[i];
return *this;
}
friend std::ostream& operator<<(std::ostream& mystream,Polynom &ob);
friend std::istream& operator>>(std::istream& mystream,Polynom &ob);
int min(int n,int m)
{return (n<m)? n:m; }
int max(int n,int m)
{return (n>m)? n:m; }
};
//*********** Polynom() **********************************
Polynom::Polynom()
{
n=rand();
koef=new double[n+1];
if(!koef){std::cout<<"Error";getch();return;}
for(int i=n;i>=0;i--)
koef[i]=rand()-5;
}
//************* Polynom(int k) *******************************
Polynom::Polynom(int k)
{ n=k;
koef=new double[n+1];
if(!koef){std::cout<<"Error";getch();return;}
for(int i=n;i>=0;i--)
koef[i]=rand()-5;
}
//****************** Polynom(int k,double mas[]) ******************
Polynom::Polynom(int k,double mas[])
{n=k;
koef=new double[n+1];
if(!koef){std::cout<<"Error";getch();return;}
for(int i=n;i>=0;i--)
koef[i]=mas[i];
}
//*************** Polynom(const Polynom&ob) *********************
Polynom::Polynom(const Polynom&ob)
{n=ob.n;
koef=new double[n+1];
if(!koef){std::cout<<"Error";getch();return;}
for(int i=0;i<=n;i++)
koef[i]=ob.koef[i];
}
//**************** void GiveMemory(int k) **********************
void Polynom::GiveMemory(int k)
{
if(koef) delete [] koef;
koef=new double[k+1];
if(!koef){std::cout<<"Error";getch();return;}
}
//******************** SetPolynom **************************
void Polynom::SetPolynom(int k,double *mas)
{ n=k;
if(koef) delete [] koef;
koef = new double [n+1];
for(int i=n;i>=0;i--)
koef[i]=mas[i];
}
//*************** CalculateValue *****************************
void Polynom::CalculateValue(double x=1.0)
{ double s;
int i;
for(s=koef[0],i=1;i<=n;i++)
s=s+koef[i]*pow(x,i);
std::cout<<"f("<<x<<")="; std::cout<<s<<std::endl;
}
//**************** Polynom operator+(Polynom ob) ***************
Polynom Polynom::operator+(Polynom ob)
{ int i;
Polynom rab;
rab.GiveMemory(max(n,ob.GetDegree() ));
for(i=0;i<=min(n,ob.GetDegree());i++)
rab.koef[i]=koef[i]+ob.GetOneCoefficient(i);
if(n<ob.GetDegree())
{
for(i=min(n,ob.GetDegree())+1;i<=ob .GetDegree();i++)
rab.koef[i]=ob.GetOneCoefficient(i);
rab.n=ob.GetDegree();
}
else
{
for(i=min(n,ob.GetDegree())+1;i<=n; i++) rab.koef[i]=koef[i];
rab.n=n;
}
return rab;
}
//*************** Polynom operator*(Polynom ob) ***************
Polynom Polynom::operator*(Polynom ob)
{
int i,j,k;
double s;
Polynom rab;
rab.GiveMemory(n+ob.GetDegree());
for(i=0;i<=n+ob.GetDegree();i++)
{ s=0;
for(j=0;j<=n;j++)
for(k=0;k<=ob.GetDegree();k++)
if(j+k==i)s=s+koef[j]*ob.GetOneCoefficient(k);
rab.koef[i]=s;
}
rab.n=n+ob.GetDegree();
return rab;
}
//********** ostream& operator<<(ostream& mystream,Polynom &ob) ******
std::ostream& operator<<(std::ostream& mystream,Polynom &ob)
{ char c=' '; //пропустим “+” перед первым коэффициентом
for(int i=ob.n;i>=0;i--)
{ double ai=ob.koef[i];
if(ai==0) continue;
else {if(ai>0) mystream<<c; mystream<<ai;}
if(i==0) continue; else mystream<<"x";
if(i==1) continue; else mystream<<"^"<<i;
if(ai!=0)c='+';
}
if(c==' ')mystream<<0;
mystream<<std::endl;
return mystream;
}
//********* istream& operator>>(istream& mystream,Polynom &ob) *
std::istream& operator>>(std::istream& mystream,Polynom &ob)
{
int i;
std::cout<<"Enter Degree:"; mystream>>ob.n; std::cout<<std::endl;
for(i=ob.n;i>=0;i--)
{
std::cout<<"Enter koeff "<<i<<":"; mystream>>ob.koef[i];
}
return mystream;
}
 
//******************** MAIN ****************************
using namespace std;
int main(int argc, char* argv[])
{ 
    const int m=3;
Polynom f,g,masp[m],*p1,s;
int n=5,i;
double K[6]={1.0,3.2,0.0,4.1,0.0,1.1};
p1=new Polynom(n,K);
cout<<*p1;
p1->CalculateValue(2.0);
cin>>f;
cout<<" f(x)= "; cout<<f;
cout<<" g(x)= "; cout<<g;
s=f+g;
cout<<"f(x)+g(x) = "; cout<<s;
s=f*g;
cout<<" f(x)*g(x) = "; cout<<s;
s=masp[0]; cout<<masp[0];
for(i=1;i<m;i++)
{ s=s+masp[i]; cout<<masp[i];}
cout<<"Summa: "; cout<< s;
delete p1;
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru