c++学习告一段落,今天完成了课程设计,很简单的计算器的设计,就把自己的代码分享给大家。`
#include
#include
using namespace std;
void A(); /简单数的运算/
template
class count1
{
t a;
t b;
public:
count1();
void add();
void cut();
void ride();
void exc();
};
void B(); /复数的运算/
class complex
{
double a, b;
public:
complex(double c, double d) :a©, b(d) { }
complex() {}
complex operator +(complex bl);
complex operator -(complex bl);
complex operator *(complex bl);
complex operator /(complex bl);
void print();
};
void C(); /矩阵的运算/
class mat
{
int m, n, l, k;
int **a;
int **b;
public:
mat();
void add();
void cut();
void ride();
};
void D(); /三角函数的运算/
class san
{
double a;
public:
san();
void sin1();
void cos1();
void tan1();
};
void E(); /对数的运算/
int main()
{
int q;
cout << “请选择:” << endl;
cout << "1— 简单数据的加减乘除 " << endl;
cout << “2—复数的运算” << endl;
cout << “3—矩阵的运算” << endl;
cout << “4—三角函数的运算” << endl;
cout << “5—对数运算” << endl;
cin >> q;
while (q != 6)
{
if (q == 1)
A();
else if (q == 2)
B();
else if (q == 3)
C();
else if (q == 4)
D();
else if (q == 5)
E();
else
cout << “输入有误,请重新输入” << endl;
cin >> q;
}
return 0;
}
void A()
{
int n;
count1 cl;
cout << “请输入你要的运算:1—相加 2----相减 3—相乘 4—相除 5—退出” << endl;
cin >> n;
while (n != 5)
{
if (n == 1)
cl.add();
else if (n == 2)
cl.cut();
else if (n == 3)
cl.ride();
else if (n == 4)
cl.exc();
else if (n == 5)
break;
else
cout<<endl;
cin >> n;
}
}
template
count1::count1()
{
cout << “请输入要运算的数:” << endl;
cin >> a >> b;
}
template
void count1::add()/加法/
{
t c;
c = a + b;
cout << “相加的结果是:” << c << endl;
}
template
void count1::cut()//减法/
{
t c;
c = a - b;
cout << “相减的结果是:” << c << endl;
}
template
void count1::ride()/乘法/
{
t c;
c = a * b;
cout << “相乘的结果是:” << c << endl;
}
template
void count1::exc()/除法/
{
t c;
if (b == 0)
{
cout << “输入有误,被除数不能为零,请重新输入!” << endl;
cin >> b;
}
else
c = a / b;
cout << “相除的结果是:” << c << endl;
}
void B()
{
double a, b, c, d;
complex cl;
cout << “请输第一个复数的实部和虚部:” << endl;
cin >> a >> b;
complex al(a, b);
cout << “请输入第二个复数的实部和虚部:” << endl;
cin >> c >> d;
complex bl(c, d);
cl = al + bl;
cout << “两复数相加后的结果为:” << endl;
cl.print();
cl = al * bl;
cout << “两复数相乘后的结果为:” << endl;
cl.print();
cl = al - bl;
cout << “两复数相减后的结果为:” << endl;
cl.print();
cl = al / bl;
cout << “两复数相除后的结果为:” << endl;
cl.print();
}
complex complex::operator+(complex bl)
{
complex cl;
cl.a = a + bl.a;
cl.b = b + bl.b;
return cl;
}
complex complex::operator-(complex bl)
{
complex cl;
cl.a = a - bl.a;
cl.b = b - bl.b;
return cl;
}
complex complex::operator*(complex bl)
{
complex cl;
cl.a = a * bl.a - b * bl.b;
cl.b = b * bl.a + a * bl.b;
return cl;
}
complex complex::operator/(complex bl)
{
complex cl;
cl.a = (abl.a + b * bl.b) / (bl.abl.a - bl.bbl.b);
cl.b = (b * bl.a - a * bl.b) / (bl.abl.a - bl.b*bl.b);
return cl;
}
void complex::print()
{
cout << a << " " << b << endl;
}
void C()
{
mat al;
int n;
cout << “请输入你的选择: 1—相加 2—相减 3—相乘 4—退出” << endl;
cin >> n;
while (n != 5)
{
if (n == 1)
al.add();
else if (n == 2)
al.cut();
else if (n == 3)
al.ride();
else if (n == 4)
break;
else
cout << “你的输入有误,请重新选择:” << endl;
cin >> n;
}
}
mat::mat()
{
cout << “请输入要运算的第一个矩阵行数和列数:” << endl;
cin >> m >> n;
cout << endl;
cout << “请输入要运算的第二个矩阵行数和列数:” << endl;
cin >> l >> k;
cout << endl;
a = (int *)malloc(m * sizeof(float));
for (int i = 0;i < m;i++)
a[i] = (int *)malloc(n * sizeof(float));
b = (int *)malloc(l * sizeof(float));
for (int i = 0;i < m;i++)
b[i] = (int *)malloc(k * sizeof(float));
int i, j;
cout << “请输入要运算的第一个矩阵:” << endl;
for (i = 0;i < m;i++)
for (j = 0;j < n;j++)
cin >> a[i][j];
cout << “请输入要运算的第二个矩阵:” << endl;
for (i = 0;i < l;i++)
for (j = 0;j < k;j++)
cin >> b[i][j];
}
void mat::add()/加法/
{
int **c, i, j;
c = (int *)malloc(m * sizeof(float));
for (int i = 0;i < m;i++)
c[i] = (int *)malloc(n * sizeof(float));
if (m != l || n != k)
cout << “您输入的矩阵不能进行加法运算!” << endl;
else
{
for (i = 0;i < m;i++)
for (j = 0;j < n;j++)
c[i][j] = a[i][j] + b[i][j];
for (i = 0;i < m;i++)
{
cout << endl;
for (j = 0;j < n;j++)
cout << c[i][j] << " ";
}
}
}
void mat::cut()/减法/
{
int **c, i, j;
c = (int *)malloc(m * sizeof(float));
for (int i = 0;i < m;i++)
c[i] = (int *)malloc(n * sizeof(float));
if (m != l || n != k)
cout << “您输入的矩阵不能进行减法运算!” << endl;
else
{
for (i = 0;i < m;i++)
for (j = 0;j < n;j++)
c[i][j] = a[i][j] - b[i][j];
for (i = 0;i < m;i++)
{
cout << endl;
for (j = 0;j < n;j++)
cout << c[i][j] << " ";
}
}
}
void mat::ride()/乘法/
{
int *c, i, j, s, e = 0;
c = (int )malloc(m * sizeof(float));
for (int i = 0;i < m;i++)
c[i] = (int )malloc(k * sizeof(float));
if (n != l)
cout << “您输入的矩阵不能进行乘法运算!” << endl;
else
{
{
for (i = 0;i < m;i++)
for (j = 0;j < k;j++)
{
for (s = 0;s < n;s++)
e = e + a[i][s] * b[s][j];
c[i][j] = e;
e = 0;
}
for (i = 0;i < m;i++)
{
cout << endl;
for (j = 0;j < k;j++)
cout << c[i][j] << " ";
}
}
}
}
void D()
{
int n;
san al;
cout << “请选择:1—正弦运算 2—余弦运算 3—正切运算 4—退出” << endl;
cin >> n;
while (n != 4)
{
if (n == 1)
al.sin1();
else if (n == 2)
al.cos1();
else if (n == 3)
al.tan1();
else if (n == 4)
break;
else
cout << “你的输入不正确,请重新输入” << endl;
cin >> n;
}
}
san::san()
{
cout << “请输入要运算的角度” << endl;
cin >> a;
}
void san::sin1()
{
double b = sin(a(3.1415926 / 180.0));
cout << “sin” << a << “的值为:” << b << endl;
}
void san::cos1()
{
double b = cos(a(3.1415926 / 180.0));
cout << “cos” << a << “的值为:” << b << endl;
}
void san::tan1()
{
double b = tan(a(3.1415926 / 180.0));
cout << “tan” << a << “的值为:” << b << endl;
}
void E()
{
double a, b, c;
cout << "请输入底数:" << endl;
cin >> a;
cout << "请输入要运算的数:" << endl;
cin >> c;
b = log(c) / log(a);
cout << "以" << a << "为底" << c << "的对数为:" << b << endl;
}