类的杂七杂八2

有理数(分数)、三维向量的运算

#include <iostream>
using namespace std;
//有理数的加减乘除运算
class Rational
{
private:
	int c1, c2;
public:
	Rational(int, int);
	Rational(const Rational& c);
	void Add(const Rational c);
	void Minus(const Rational c);
	void Multiply(const Rational c);
	void Divide(const Rational c);
	void Input();
	void Yuefen();
	void Output();
	int sum1=0, sum2=0, sum3=0, sum4=0;
};

Rational::Rational(int c11 = 0, int c22 = 0)
{
	c1 = c11;
	c2 = c22;
}

Rational::Rational(const Rational& c)
{
	c1 = c.c1;
	c2 = c.c2;
}

void Rational::Input()
{
	cout << "请输入分母(不为0):";
	cin >> c1;
	if (c1 != 0)
	{
		cout << "请输入分子:";
		cin >> c2;
	}
	else
	{
		cout << "输入有误!" << endl;
	}
}

void Rational::Yuefen()
{
	for (int i = sum4;i > 0;i--)
	{
		if (sum1 % i == 0 && sum4 % i == 0)
		{
			sum1 = sum1 / i;
			sum4 = sum4 / i;
		}
		continue;
	}
}

void Rational::Output()
{
	if (sum1 == sum4)
	{
		cout << "1" << endl;
	}
	else if (sum4 == 0)
	{
		cout << "0" << endl;
	}
	else
	{
		cout << sum4 << "/" << sum1 << endl;
	}
}
void Rational::Add(const Rational c)
{
	sum1 = c1 * c.c1;
	sum2 = c2 * c.c1;
	sum3 = c.c2 * c1;
	sum4 = sum2 + sum3;
	Yuefen();
	cout << "两分数相加结果是:" << endl;
	Output();
}
void Rational::Minus(const Rational c)
{
	if (c1 == c.c1 && c2 == c.c2)
	{
		cout << "两分数相减的结果是:0" << endl;
	}
	else
	{
		sum1 = c1 * c.c1;
		sum2 = c2 * c.c1;
		sum3 = c.c2 * c1;
		sum4 = sum2 - sum3;
		Yuefen();
		cout << "两分数相减结果是:" << endl;
		Output();
	}
}
void Rational::Multiply(const Rational c)
{
	sum1 = c1 * c.c1;
	sum4 = c2 * c.c2;
	Yuefen();
	cout << "两分数相乘结果是:" << endl;
	Output();
}
void Rational::Divide(const Rational c)
{
	sum1 = c1 * c.c2;
	sum4 = c2 * c.c1;
	Yuefen();
	cout << "两分数相除结果是:" << endl;
	Output();
}
//向量类的加减、点乘、叉乘运算
class Vector
{
private:
	double v1, v2, v3;
public:
	Vector(double, double, double);
	Vector(const Vector& v);
	void operator +(const Vector v);
	void operator -(const Vector v);
	void operator *(const Vector v);
	void operator ^(const Vector v);
	void Input();
	void Output();
	double sum1=0, sum2=0, sum3=0;
};

Vector::Vector(double v1a = 0, double v2a = 0, double v3a = 0)
{
	v1 = v1a;
	v2 = v2a;
	v3 = v3a;
}

Vector::Vector(const Vector& v)
{
	v1 = v.v1;
	v2 = v.v2;
	v3 = v.v3;
}

void Vector::Input()
{
	cout << "请输入一个三维向量" << endl << "横坐标为:";
	cin >> v1;
	cout << "纵坐标为:";
	cin >> v2;
	cout << "竖坐标为:";
	cin >> v3;
}

void Vector::Output()
{
	cout << "(" << sum1 << "," << sum2 << "," << sum3 << ")" << endl;
}
void Vector::operator+(const Vector v)
{
	sum1 = v1 + v.v1;
	sum2 = v2 + v.v2;
	sum3 = v3 + v.v3;
	cout << "两向量相加的结果是:";
	Output();
}

void Vector::operator-(const Vector v)
{
	sum1 = v1 - v.v1;
	sum2 = v2 - v.v2;
	sum3 = v3 - v.v3;
	cout << "两向量相减的结果是:";
	Output();
}
void Vector::operator *(const Vector v)
{
	sum1 = v1 * v.v1 + v2 * v.v2 + v3 * v.v3;
	cout << "两向量点乘的结果是:" << sum1 << endl;
}
void Vector::operator ^(const Vector v)
{
	sum1 = v2 * v.v3 - v3 * v.v2;
	sum2 = -(v1 * v.v3 - v3 * v.v1);
	sum3 = v1 * v.v2 - v2 * v.v1;
	cout << "两向量叉乘的结果是:";
	Output();
}
int main()
{
	//有理数运算
	Rational r1, r2;
	r1.Input();
	r2.Input();
	r1.Add(r2);
	r1.Minus(r2);
	r1.Multiply(r2);
	r1.Divide(r2);
	//向量运算
	cout << "---------------------------" << endl;
	Vector vec1, vec2;
	vec1.Input();
	vec2.Input();
	vec1+vec2;
	vec1-vec2;
	vec1*vec2;
	vec1^vec2;
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值