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

Добавить функцию main() в код - C++

Восстановить пароль Регистрация
 
kataris
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 16
18.02.2014, 11:10     Добавить функцию main() в код #1
Помогите дописать программу только функцию main() на C++
листинг проги
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
#ifndef COMPLEX_H
#define COMPLEX_H
 
#include <math.h>//Подключение прототипов математических функций
 
class CComplex
{   
private:
    double re,im;
public:
       
    CComplex(){re = 0; im = 0;}//Конструктор по умолчанию
    //Конструкторы преобразования
    CComplex(double _re, double _im){re = _re; im = _im;}
    CComplex(double val){re = val; im = 0;}
 
    //Перегруженные операторы
    CComplex operator+(double val);
    CComplex operator-(double val);
    CComplex operator*(double val);
    CComplex operator/(double val);
    
    CComplex operator+(CComplex& val);
    CComplex operator-(CComplex& val);
    CComplex operator*(CComplex& val);
    CComplex operator/(CComplex& val);
    
    double Re();
    double Im();
 
    void AlgToExp();
    void ExpToAlg();
};
typedef CComplex *LPCCOMPLEX;
 
CComplex
CComplex::operator +(double val)
{
    CComplex ret_val;
    ret_val.re = re+val;
    ret_val.im = im;
    return ret_val;
}
 
CComplex
CComplex::operator -(double val)
{
    CComplex ret_val;
    ret_val.re = re-val;
    ret_val.im = im;
    return ret_val;
}
 
CComplex
CComplex::operator *(double val)
{
    CComplex ret_val;
    ret_val.re = re*val;
    ret_val.im = im*val;
    return ret_val;
}
 
CComplex
CComplex::operator /(double val)
{
    CComplex ret_val;
    ret_val.re = re/val;
    ret_val.im = im/val;
    return ret_val;
}
 
CComplex
CComplex::operator +(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re+val.re;
    ret_val.im = im+val.im;
    return ret_val;
}
 
CComplex
CComplex::operator -(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re-val.re;
    ret_val.im = im-val.im;
    return ret_val;
}
 
CComplex
CComplex::operator *(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re*val.re - im*val.im;
    ret_val.im = im*val.im + re*val.im;
    return ret_val;
}
 
CComplex 
CComplex::operator /(CComplex& val)
{
    CComplex ret_val;
    double div = pow(val.re,2) - pow(val.im,2);
    ret_val.re = re*val.re + im*val.im;
    ret_val.im = -re*val.im + im*val.re;    
    return ret_val/div;
}
 
double CComplex::Re()
{
    return re;
}
 
double CComplex::Im()
{
    return im;
}
 
void
CComplex::AlgToExp()
{
    CComplex ret_val;
    ret_val.re = sqrt(re*re + im*im);
    ret_val.im = atan2(re,im);
    re = ret_val.re;
    im = ret_val.im;
}
 
void
CComplex::ExpToAlg()
{
    CComplex ret_val;
    double deg = asin(1.0)/90;
    ret_val.re = re*cos(im*deg);
    ret_val.im = im*sin(im*deg);
    re = ret_val.re;
    im = ret_val.im;
}
Добавлено через 2 минуты
main()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
18.02.2014, 11:27     Добавить функцию main() в код #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
CComplex a(3.0, 4.0);
CComplex  b;
 
std::cout << "Enter a complex number (q to quit):\n";
 
while (std::cin >> b)
{
std::cout << "b is " << b << '\n';
std::cout << "a + b is " << a + b << '\n';
std::cout << "a - b is " << a - b << '\n';
std::cout << "a * b is " << a * b << '\n';
std::cout << "2 * b is " << 2 * b << '\n';
std::cout << "a/b is " << a / b << '\n';
 
std::cout << "Enter a complex number (q to quit):\n";
}
 
std::cout << "Done!\n";
return 0;
}
Добавлено через 1 минуту
Перегрузка операций << и >> для класса CComplex ложится на плечи ТС))
kataris
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 16
18.02.2014, 11:33  [ТС]     Добавить функцию main() в код #3
мне подчеркивает std
Миниатюры
Добавить функцию main() в код  
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
18.02.2014, 11:35     Добавить функцию main() в код #4
Цитата Сообщение от kataris Посмотреть сообщение
мне подчеркивает std
В самое начало добавь
C++
1
#include <iostream>
kataris
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 16
18.02.2014, 11:38  [ТС]     Добавить функцию main() в код #5
Цитата Сообщение от mustimur Посмотреть сообщение
В самое начало добавь
C++
1
#include <iostream>
Что тут не так?
Изображения
 
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
18.02.2014, 11:40     Добавить функцию main() в код #6
#endif присутствует?
kataris
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 16
18.02.2014, 11:43  [ТС]     Добавить функцию main() в код #7
вот что получилось но она не работает(


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
#include <iostream>
#ifndef COMPLEX_H
#define COMPLEX_H
 
#include <math.h>//Подключение прототипов математических функций
 
class CComplex
{   
private:
    double re,im;
public:
       
    CComplex(){re = 0; im = 0;}//Конструктор по умолчанию
    //Конструкторы преобразования
    CComplex(double _re, double _im){re = _re; im = _im;}
    CComplex(double val){re = val; im = 0;}
 
    //Перегруженные операторы
    CComplex operator+(double val);
    CComplex operator-(double val);
    CComplex operator*(double val);
    CComplex operator/(double val);
    
    CComplex operator+(CComplex& val);
    CComplex operator-(CComplex& val);
    CComplex operator*(CComplex& val);
    CComplex operator/(CComplex& val);
    
    double Re();
    double Im();
 
    void AlgToExp();
    void ExpToAlg();
};
typedef CComplex *LPCCOMPLEX;
 
CComplex
CComplex::operator +(double val)
{
    CComplex ret_val;
    ret_val.re = re+val;
    ret_val.im = im;
    return ret_val;
}
 
CComplex
CComplex::operator -(double val)
{
    CComplex ret_val;
    ret_val.re = re-val;
    ret_val.im = im;
    return ret_val;
}
 
CComplex
CComplex::operator *(double val)
{
    CComplex ret_val;
    ret_val.re = re*val;
    ret_val.im = im*val;
    return ret_val;
}
 
CComplex
CComplex::operator /(double val)
{
    CComplex ret_val;
    ret_val.re = re/val;
    ret_val.im = im/val;
    return ret_val;
}
 
CComplex
CComplex::operator +(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re+val.re;
    ret_val.im = im+val.im;
    return ret_val;
}
 
CComplex
CComplex::operator -(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re-val.re;
    ret_val.im = im-val.im;
    return ret_val;
}
 
CComplex
CComplex::operator *(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re*val.re - im*val.im;
    ret_val.im = im*val.im + re*val.im;
    return ret_val;
}
 
CComplex 
CComplex::operator /(CComplex& val)
{
    CComplex ret_val;
    double div = pow(val.re,2) - pow(val.im,2);
    ret_val.re = re*val.re + im*val.im;
    ret_val.im = -re*val.im + im*val.re;    
    return ret_val/div;
}
 
double CComplex::Re()
{
    return re;
}
 
double CComplex::Im()
{
    return im;
}
 
void
CComplex::AlgToExp()
{
    CComplex ret_val;
    ret_val.re = sqrt(re*re + im*im);
    ret_val.im = atan2(re,im);
    re = ret_val.re;
    im = ret_val.im;
}
 
void
CComplex::ExpToAlg()
{
    CComplex ret_val;
    double deg = asin(1.0)/90;
    ret_val.re = re*cos(im*deg);
    ret_val.im = im*sin(im*deg);
    re = ret_val.re;
    im = ret_val.im;
}
#endif
int main()
{
CComplex a(3.0, 4.0);
CComplex  b;
 
std::cout << "Enter a complex number (q to quit):\n";
 
while (std::cin >> b)
{
std::cout << "b is " << b << '\n';
std::cout << "a + b is " << a + b << '\n';
std::cout << "a - b is " << a - b << '\n';
std::cout << "a * b is " << a * b << '\n';
std::cout << "2 * b is " << 2 * b << '\n';
std::cout << "a/b is " << a / b << '\n';
 
std::cout << "Enter a complex number (q to quit):\n";
}
 
std::cout << "Done!\n";
return 0;
}
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
18.02.2014, 11:47     Добавить функцию main() в код #8
kataris, разнесите определения класса и его методов по разным файлам. А в файл с main() включите свой заголовочный файл
#include "complex.h", ну или как он у вас там "обзывается"
kataris
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 16
18.02.2014, 11:50  [ТС]     Добавить функцию main() в код #9
Цитата Сообщение от Extrim88 Посмотреть сообщение
kataris, разнесите определения класса и его методов по разным файлам. А в файл с main() включите свой заголовочный файл
#include "complex.h", ну или как он у вас там "обзывается"
можете показать как?
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
18.02.2014, 11:56     Добавить функцию main() в код #10
1. Добавляете в проект заголовочный файл *.h. В нем используете директивы #ifndef - #endif, копируете туда определение класса своего.
2. Добавляете в проект файл кода *.cpp. В него подключаете заголовочный файл из п. 1
#include "имя заголовочного файла". В данный файл копируете определения методов класса.
3. Ну и собственно еще добавляете в проект файл *.cpp, содержащий main( ). Опять-таки подключаете ваш заголовочный файл
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
18.02.2014, 12:08     Добавить функцию main() в код #11
Вод рабочий код:
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
#include <iostream>
#include <math.h>//Подключение прототипов математических функций
 
class CComplex
{   
private:
    double re,im;
public:
       
    CComplex(){re = 0; im = 0;}//Конструктор по умолчанию
    //Конструкторы преобразования
    CComplex(double _re, double _im){re = _re; im = _im;}
    CComplex(double val){re = val; im = 0;}
 
    //Перегруженные операторы
    CComplex operator+(double val);
    CComplex operator-(double val);
    CComplex operator*(double val);
    CComplex operator/(double val);
    CComplex operator+(CComplex& val);
    CComplex operator-(CComplex& val);
    CComplex operator*(CComplex& val);
    CComplex operator/(CComplex& val);
    void operator>>(std::iostream ist)
    {
        ist>>re>>im;
    }
 
 
    double Re();
    double Im();
    void Re(double _re){re=_re;}
    void Im(double _im){im=_im;}
    void AlgToExp();
    void ExpToAlg();
};
typedef CComplex *LPCCOMPLEX;
 
CComplex
 
CComplex::operator +(double val)
{
    CComplex ret_val;
    ret_val.re = re+val;
    ret_val.im = im;
    return ret_val;
}
 
CComplex
CComplex::operator -(double val)
{
    CComplex ret_val;
    ret_val.re = re-val;
    ret_val.im = im;
    return ret_val;
}
 
CComplex
CComplex::operator *(double val)
{
    CComplex ret_val;
    ret_val.re = re*val;
    ret_val.im = im*val;
    return ret_val;
}
 
CComplex
CComplex::operator /(double val)
{
    CComplex ret_val;
    ret_val.re = re/val;
    ret_val.im = im/val;
    return ret_val;
}
 
CComplex
CComplex::operator +(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re+val.re;
    ret_val.im = im+val.im;
    return ret_val;
}
 
CComplex
CComplex::operator -(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re-val.re;
    ret_val.im = im-val.im;
    return ret_val;
}
 
CComplex
CComplex::operator *(CComplex& val)
{
    CComplex ret_val;
    ret_val.re = re*val.re - im*val.im;
    ret_val.im = im*val.im + re*val.im;
    return ret_val;
}
 
CComplex 
CComplex::operator /(CComplex& val)
{
    CComplex ret_val;
    double div = pow(val.re,2) - pow(val.im,2);
    ret_val.re = re*val.re + im*val.im;
    ret_val.im = -re*val.im + im*val.re;    
    return ret_val/div;
}
 
double CComplex::Re()
{
    return re;
}
 
double CComplex::Im()
{
    return im;
}
 
void
CComplex::AlgToExp()
{
    CComplex ret_val;
    ret_val.re = sqrt(re*re + im*im);
    ret_val.im = atan2(re,im);
    re = ret_val.re;
    im = ret_val.im;
}
 
void
CComplex::ExpToAlg()
{
    CComplex ret_val;
    double deg = asin(1.0)/90;
    ret_val.re = re*cos(im*deg);
    ret_val.im = im*sin(im*deg);
    re = ret_val.re;
    im = ret_val.im;
}
 
int main()
{
CComplex a(3.0, 4.0);
CComplex  b;
double r,i; 
std::cout << "Enter a complex number (q to quit):\n";
 
while (std::cin>>r>>i)
{
    b.Re(r);
    b.Im(i);
 
std::cout << "a + b is " << (a + b).Re()<<"+i*"<< (a + b).Im() << '\n';
std::cout << "a - b is "  << (a - b).Re()<<"+i*"<< (a - b).Im() << '\n';
std::cout << "a * b is "  << (a * b).Re()<<"+i*"<< (a * b).Im() << '\n';
std::cout << "2 * b is "  << (b*2.0).Re()<<"+i*"<< (b*2.0).Im() << '\n';
std::cout << "a/b is "  << (a / b).Re()<<"+i*"<< (a/b).Im() << '\n';
 
std::cout << "Enter a complex number (q to quit):\n";
}
 
std::cout << "Done!\n";
return 0;
}
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
18.02.2014, 13:17     Добавить функцию main() в код #12
C++
1
2
3
4
    void operator>>(std::iostream ist)
    {
        ist>>re>>im;
    }
Так лучше не делать. Чревато последствиями.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//В теле объявления класса:
 friend ostream& operator << (ostream&, CComplex);
 friend istream& operator >> (istream&, CComplex&);
//Определение
 ostream& operator << (ostream& os, CComplex comp)
 {
    std::cout << comp.Re();
    if (comp.Im() >= 0) {
        std::cout << '+';
        std::cout << comp.Im() << 'i';
    }
    else {
        std::cout << comp.Im() << 'i';
    }
    return os;
 }
 istream& operator >> (istream& is, CComplex& comp)
 {
    std::cin >> comp.re;
    std::cin >> comp.im;
    return is;
 }

Это убрать:
C++
1
typedef CComplex *LPCCOMPLEX;
Вот тут ошибка:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
CComplex 
CComplex::operator /(CComplex& val)
{
    CComplex ret_val;
    double div = pow(val.re,2) - pow(val.im,2);
    ret_val.re = re*val.re + im*val.im;
    ret_val.im = -re*val.im + im*val.re;    
    return ret_val/div;
}

Должно быть:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
CComplex 
CComplex::operator /(CComplex& val)
{
    CComplex ret_val;
    double div = pow(val.re,2) + pow(val.im,2);
    ret_val.re = re*val.re + im*val.im;
    ret_val.im = -re*val.im + im*val.re;    
    return ret_val/div;
}

Не советую инициализировать поля класса в теле конструктора:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
 CComplex():re(0), im(0) //Конструктор по умолчанию
 {}
 //Конструкторы преобразования
 CComplex(double _re, double _im): re(_re), im(_im)
 {}
 CComplex(double val): re(val), im(0)
 {}


Добавлено через 42 минуты
Вот вам полная реализация без ничего лишнего:
Кликните здесь для просмотра всего текста
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
#include<iostream>
#include<math.h>
using namespace std;
 class CComplex
 {
 private:
     double re;
     double im;
 public:
 
     CComplex():re(0), im(0)
     {}
     CComplex(double val): re(val), im(0)
     {}
     CComplex(double _re, double _im): re(_re), im(_im)
     {}
 
     friend CComplex operator+(CComplex, CComplex);
     friend CComplex operator-(CComplex, CComplex);
     friend CComplex operator*(CComplex, CComplex);
     friend CComplex operator/(CComplex, CComplex);
 
     double Re();
     double Im();
 
     friend ostream& operator << (ostream&, CComplex);
     friend istream& operator >> (istream&, CComplex&);
 
     void AlgToExp();
     void ExpToAlg();
 };
 
 CComplex operator +(CComplex val1, CComplex val2)
 {
     double  re = val1.re+val2.re;
     double  im = val1.im+val2.im;
     return CComplex(re, im);
 }
 
 CComplex operator -(CComplex val1, CComplex val2)
 {
     double  re = val1.re-val2.re;
     double  im = val1.im-val2.im;
     return CComplex(re, im);
 }
 
 CComplex operator *(CComplex val1, CComplex val2)
 {
     double  re = val1.re*val2.re - val1.im*val2.im;
     double  im = val1.im*val2.im + val1.re*val2.im;
     return CComplex(re, im);
 }
 
 CComplex operator /(CComplex val1, CComplex val2)
 {
     double div = val2.re * val2.re + val2.im * val2.im;
     double re = val1.re*val2.re + val1.im*val2.im;
     double im = -val1.re*val2.im + val1.im*val2.re;
     return CComplex(re / div, im / div);
 }
 
 ostream& operator << (ostream& os, CComplex comp)
 {
    std::cout << comp.Re();
    if (comp.Im() >= 0) {
        std::cout << '+';
        std::cout << comp.Im() << 'i';
    }
    else {
        std::cout << comp.Im() << 'i';
    }
    return os;
 }
 istream& operator >> (istream& is, CComplex& comp)
 {
    std::cin >> comp.re;
    std::cin >> comp.im;
    return is;
 }
 
 double CComplex::Re()
 {
    return re;         
 }
 
 double CComplex::Im()
 {
    return im;
 }
 
 void CComplex::AlgToExp()
 {
     re = sqrt(re*re + im*im);
     im = atan2(re,im);
 }
 
 void CComplex::ExpToAlg()
 {
     double deg = asin(1.0)/90;
     re = re*cos(im*deg);
     im = im*sin(im*deg);
 }
 
 int main()
 {
 CComplex a(3.0, 4.0);
 CComplex b;
 
 std::cout << "Enter a complex number (q to quit):\n";
 
 while (std::cin >> b)
 {
     std::cout << "b is " << b << '\n';
 
     std::cout << "a + b is " << a + b << '\n';
     std::cout << "a - b is " << a - b << '\n';
     std::cout << "a * b is " << a * b << '\n';
     std::cout << "2 * b is " << 2 * b << '\n';
     std::cout << "a/b is " << a / b << '\n';
 
     std::cout << "Enter a complex number (q to quit):\n";
 }
 
 std::cout << "Done!\n";
 return 0;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 13:18     Добавить функцию main() в код
Еще ссылки по теме:

Зачем в функцию main передается void? C++
Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN() C++
Нужно отредактировать код поиска в некоторых папках. Добавить функцию поиска в архивах C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
18.02.2014, 13:18     Добавить функцию main() в код #13
Цитата Сообщение от Ilot Посмотреть сообщение
Так лучше не делать. Чревато последствиями.
согласен, поэтому сначала попробовал а потом выкинуть забыл, но это не где не используется. А тот код у него взят от куда-то так что не проверял...
Yandex
Объявления
18.02.2014, 13:18     Добавить функцию main() в код
Ответ Создать тему
Опции темы

Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru