-
Notifications
You must be signed in to change notification settings - Fork 1
/
kompl.cpp
123 lines (121 loc) · 2.41 KB
/
kompl.cpp
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
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
class komplex
{
public:
float komp[4];
komplex operator+(komplex);
komplex operator-(komplex);
komplex operator*(komplex);
komplex operator/(komplex);
komplex operator=(komplex);
void otvet(int);
int menu(void);
void vvod(void);
void isx(int);
};
void komplex::vvod()
{
clrscr();
cout <<"Vvedite A i B dly vyrageniy A+Bi\n";
cin >> komp[1]>>komp[2];
}
komplex komplex::operator+(komplex t)
{
komplex temp;
temp.komp[1]=komp[1]+t.komp[1];
temp.komp[2]=komp[2]+t.komp[2];
return temp;
}
komplex komplex::operator=(komplex t)
{
komp[1]=t.komp[1];
komp[2]=t.komp[2];
return *this;
}
void komplex::otvet(int i)
{
char *str;
switch(i)
{
case 1: str="Resultat slogenia"; break;
case 2: str="Resultat vychitaniy"; break;
case 3: str="Resultat umnogeniy"; break;
case 4: str="Resultat deleniy"; break;
Default: break;
}
if (komp[2]>=0)
printf("%s: (%3.2f+%3.2fi)\n",str,komp[1],komp[2]);
else printf("%s: (%3.2f%3.2fi)\n",str,komp[1],komp[2]);
cout<<"\n\n\nPress any key...";
getch();
clrscr();
}
komplex komplex::operator-(komplex t)
{
komplex temp;
temp.komp[1]=komp[1]-t.komp[1];
temp.komp[2]=komp[2]-t.komp[2];
return temp;
}
komplex komplex::operator*(komplex t)
{
komplex temp;
temp.komp[1]=(komp[1]*t.komp[1]-komp[2]*t.komp[2]);
temp.komp[2]=(komp[1]*t.komp[2]+komp[2]*t.komp[1]);
return temp;
}
komplex komplex::operator/(komplex t)
{
komplex temp;
komp[3]=(t.komp[1]*t.komp[1]+t.komp[2]*t.komp[2]);
temp.komp[1]=1.0*(komp[1]*t.komp[1]+komp[2]*t.komp[2])/komp[3];
temp.komp[2]=1.0*(komp[2]*t.komp[1]-komp[1]*t.komp[2])/komp[3];
return temp;
}
int komplex::menu(void)
{
int vy;
clrscr();
cout<<"Glavnoe menu\n";
cout<<"=====================\n";
cout<<"1 - Slogenie\n";
cout<<"2 - Vychitanie\n";
cout<<"3 - Umnogenie\n";
cout<<"4 - Delenie\n";
cout<<"5 - Vvod dannyx\n";
cout<<"0 - Exit\n";
cout<<"\nVash vybor: ";cin>>vy;
return vy;
}
void komplex::isx(int i)
{
if (i==1) clrscr();
if (komp[2]>=0)
printf("%d chislo: (%3.2f+%3.2fi)\n",i,komp[1],komp[2]);
else printf("%d chislo: (%3.2f%3.2fi)\n",i,komp[1],komp[2]);
}
main()
{
komplex a,b,c;
int vyb;
clrscr();
a.vvod();
b.vvod();
do
{
vyb=a.menu();
switch(vyb)
{
case 1: c=a+b;a.isx(1);b.isx(2);c.otvet(1);break;
case 2: c=a-b;a.isx(1);b.isx(2);c.otvet(2);break;
case 3: c=a*b;a.isx(1);b.isx(2);c.otvet(3);break;
case 4: c=a/b;a.isx(1);b.isx(2);c.otvet(4);break;
case 5: a.vvod();b.vvod();break;
Default: break;
}
}
while (vyb!=0);
}