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

Создание класса Polinom - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структура NOTE http://www.cyberforum.ru/cpp-beginners/thread559809.html
Цедь работы: ознакомление и приобретение навыков алгоритмизации задач структурной декомпозиции, описания и обработки структур разнотипных дан- ных средствами языка С/С++ и отладки программ в учебном варианте профес-сиональной инструментальной среды Microsoft Visual C++ 2010 Express Edition. Большая просьба, использовать библиотеку iostream Структура NOTE с полями: ...
C++ Заполнение матрицы! Не могу вывести матрицу...то есть вначале её ввести а потом вывести,или я что-то не так делаю? мой код: #include <iostream> #include <stdio.h> #include <math.h> #include <conio.h> #include <clocale> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread559797.html
код не запускается C++
http://algorithmlib.org/lu_inverse взяла вот отсюда код, но не могу понять почему он не запускается, подскажите чего не хватает int LU_fun_OBR(int cnt_str,double **mass,double **&LU,double **&M_obr) { int i,j,k; double sum; LU=new double *;//создаём массив под матрицу LU for(i=0;i<cnt_str;i++) LU=new double ; for(i=0;i<cnt_str;i++) {
Транспонирование матрицы. C++
Помогите с простенькой задачей!! ПОЖАЛУЙСТА Нужно написать программу на С++, которая осуществляет: 1. Консольный ввод/вывод целочисленного массива размером 5*5. 2. Транспонирование матрицы относительно побочной диагонали. Вывод на экран компьютера полученного массива. 3.Определение количества столбцов, среднее арифметическое элементов которых меньше задаваемой вводом величины.
C++/CLI WinForms Работа с формами http://www.cyberforum.ru/cpp-beginners/thread559763.html
#pragma once namespace labu { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data;
C++ Класс - выдает ошибку прога по идее верная но компилятор выдает ошибку //--------------------------------------------------------------------------- #include <vcl.h> #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> #include <math.h> подробнее

Показать сообщение отдельно
laplas
15 / 11 / 1
Регистрация: 25.12.2010
Сообщений: 91
27.04.2012, 12:13     Создание класса Polinom
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#include <iostream.h>
#include <memory.h>
 
//класс Polynom
class Polynom{
private:
    unsigned int deg; //степень полинома
    double *koef; //указатель на массив коэффициентов полинома
                  //koef[i] - коэффициент при i-й степени,
                  //koef[0] - коэффициент при нулевой степени
    void CorrectDeg(); // функция корректировки степени полинома
 
public:
    Polynom(); //конструктор без параметров
    Polynom(unsigned int, double*); //конструктор с параметрами
    Polynom(const Polynom &); //копирующий контсруктор
    Polynom::~Polynom(); //деструктор
 
    unsigned int GetDeg(); //функция получения степени полинома
    double GetKoef(unsigned int); //функция получения коэффициента при i-й степени
    unsigned int SetKoef(double, unsigned int); //функция задания коэффициента при i-й 
                                                //степени, возвращает степень полинома
    Polynom operator + (const Polynom &);   //оператор сложения двух полиномов
    Polynom operator = (const Polynom &);   //оператор присваивания
    friend Polynom MultConst(double, Polynom &); //дружественная функция умножения полинома
                                              //на константу
    void InputPolynom();    //функция ввода полинома
    void OutputPolynom();   //функция вывода полинома
};
 
// конструктор без параметров: создается полином нулевой степени
// с коэффициентом при нулевой степени равным нулю
Polynom::Polynom(){
    deg=0;
    koef=new double[deg+1];
    koef[0]=0.0;
}
 
// конструктор с параметрами
// new_deg - степень создаваемого полинома
// newkoef - указатель на new_deg+1 - элементный массив с коэффициентами 
//           полинома, где newkoef[i] - коффициент при i-й степени
//           и newkoef[0] - коэффициент при нулевой степени
// В результате степень полинома будет наибольшим номером ненулевого
// элемента массива new_koef и меньше или равна new_deg (по определению степени полинома)
Polynom::Polynom(unsigned int new_deg, double *new_koef){
    deg=0;
    for(int i=0;i<=new_deg;i++)
        if(new_koef[i]!=0) deg=i;   //инициализация переменной степени
    koef=new double[deg+1];
    for(i=0;i<=deg;i++)
        koef[i]=new_koef[i]; //инициализация массива коэффициентов
}
 
//копирующий конструктор
Polynom::Polynom(const Polynom &f){
    deg=f.deg;
    koef=new double[deg+1];
    for(int i=0;i<=deg;i++)
        koef[i]=f.koef[i];
}
 
//деструктор
Polynom::~Polynom(){
    delete[] koef;
}
// функция получения степени полинома
unsigned int Polynom::GetDeg(){
    return deg;
}
 
// функция получения коэффициента при i-й степени
double Polynom::GetKoef(unsigned int i){
    if(i<=deg) 
        return koef[i];
    else 
        return 0.0;
}
 
// функция задания коэффициента при i-й степени
unsigned int Polynom::SetKoef(double new_koef, unsigned int i){
    if(i<=deg) koef[i]=new_koef;
    else return deg;
    CorrectDeg();   
    return deg;
}
 
//оператор сложения двух полиномов
Polynom Polynom::operator + (const Polynom &t){
    int i;
    Polynom *result;
 
    if(deg>=t.deg){ //если степень первого полинома больше степени второго
        result=new Polynom(deg,koef);
        for(i=0;i<=t.deg;i++)
            result->koef[i]=result->koef[i]+t.koef[i];
    }
    else{                   //если степень второго полинома больше степень первого
        result=new Polynom(t.deg,t.koef);
        for(i=0;i<=deg;i++)
            result->koef[i]=result->koef[i]+koef[i];
    }
    result->CorrectDeg();
    return *result;
}
 
//оператор присваивания
Polynom Polynom::operator = (const Polynom &t){
    deg=t.deg;
    delete[] koef;
    koef=new double[deg+1];
    for(int i=0;i<=deg;i++)
        koef[i]=t.koef[i];
    return *this;
}
    
 
//оператор умножения числа на полином
Polynom operator * (double K, Polynom &t){
    return MultConst(K,t);
}
 
//оператор умножения полинома на число
Polynom operator * (Polynom &t, double K){
    return MultConst(K,t);
}
 
//функция реализующая умножение полинома на число
Polynom MultConst(double K, Polynom &t){
    if(K==0){
        Polynom result;
        return result;
    }
    else{
        int deg=t.deg;
        double *tmp_koef=new double[deg+1];
        for(int i=0;i<=deg;i++)
            tmp_koef[i]=K*t.koef[i];
        Polynom result(deg,tmp_koef);
        delete[] tmp_koef;
        return result;
    }
}
 
// функция корректировки степени полинома: коэффициент 
// при максимальной степени должен быть ненулевым
void Polynom::CorrectDeg(){
    if(koef[deg]==0){
        do{                                 
            deg--;
        }while(deg && koef[deg]==0);
    }
}
 
//функция ввода полинома
void Polynom::InputPolynom(){
    cout << "Input degree: ";
    cin >> deg;
    delete[] koef;
    koef=new double[deg+1];
    for(int i=0;i<deg;i++){
        cout << "K" << i << " = ";
        cin >> koef[i];
    }
    do{
        cout << "K" << deg << " = ";
        cin >> koef[deg];
        if(koef[deg]==0)
            cout << "K" << deg << " must not be zero!!!\n";
    }while(!koef[deg]);
}
 
void Polynom::OutputPolynom(){
    if(koef[deg]==1)
        cout << "X^" << deg;
    else if(koef[deg]==-1)
        cout << "-X^" << deg;
    else
        cout << koef[deg] << "X^" << deg;
 
    for(int i=deg-1;i>0;i--){
        if(koef[i]>0){
            if(koef[i]==1)
                cout << " + " << "X^" << i;
            else
                cout << " + " << koef[i] << "X^" << i;
        }else if(koef[i]<0)
            if(koef[i]==-1)
                cout << " - " << "X^" << i;
            else
                cout << " - " << (-1)*koef[i] << "X^" << i;
    }
 
    if(koef[0]>0)
        cout << " + " << koef[0] << "\n";
    else if(koef[0]<0)
        cout << " - " << (-1)*koef[0] << "\n";
}
правда тут многого нет..например нет произведения 2х многочленов..
 
Текущее время: 11:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru