艺考网
全国站

C语言一般用结构体来描述和封装较为复杂的事物

chanong
2024-02-28 13:03:12
编辑说
1结构体定义有理数及其操作#include<iostream>usingnamespacestd;structRationalT{/

1 结构定义有理数及其运算

#include
using namespace std;
struct RationalT {	// 有理数类型的定义
	int num;		// 分子
	int den;		// 分母
};
RationalT CreateRational(int num, int den)				// 创建一个有理数
{
	RationalT r;
	r.num = num;
	r.den = den;
	return r;
}
RationalT AddRational(RationalT r1, RationalT r2)		// 有理数加法
{
	RationalT r;
	int fac;
	r.num = r1.num * r2.den + r2.num * r1.den;
	r.den = r1.den * r2.den;
	fac = r.num < r.den ? r.num : r.den;				// 将结果化成最简分式
	while (r.num % fac != 0 || r.den % fac != 0) -- fac;
	r.num /= fac;
	r.den /= fac;
	return r;
}
RationalT MultiplyRational(RationalT r1, RationalT r2)	// 有理数乘法
{
	RationalT r;
	int fac;
	r.num = r1.num * r2.num;
	r.den = r1.den * r2.den;
	fac = r.num < r.den ? r.num : r.den;				// 将结果化成最简分式
	while (r.num % fac != 0 || r.den % fac != 0) -- fac;
	r.num /= fac;
	r.den /= fac;
	return r;
}
double GetRational(RationalT r)							// 将有理数转换成小数
{
	return double(r.num) / r.den;
}
void PrintRational(RationalT r)							// 以分数形式输出有理数
{
	cout << r.num << "/" << r.den << endl;
}
void main()
{
	struct RationalT r1,r2,r3,r4;
	r1 = CreateRational(2,3);
	r2 = CreateRational(3,8);
	r3 = AddRational(r1,r2);
	r4 = MultiplyRational(r1,r2);
	PrintRational(r3);
	PrintRational(r4);
	cout<有理数的定义

2类类型定义有理数及其运算

//文件名:Rational.h
//有理数类的定义
#ifndef rational_h
#define rational_h
#include 
using namespace std;
class Rational {
private:
	int num; 				//分子 
	int den; 				//分母
	
	void ReductFraction(); //将有理数化简成最简形式
	
public:
 void create(int n, int d) 
	{ 
		num = n; den = d; 
		ReductFraction();
	}
	void add(const Rational &r1, const Rational &r2);	//r1+r2,结果存于当前对象
	void multi(const Rational &r1, const Rational &r2);	//r1*r2,结果存于当前对象
	void display() 
	{ 
		cout << num << '/' << den;
	}
};
#endif
//文件名:Rational.cpp
//有理数类成员函数的实现
#include "Rational.h"
//add函数将r1和r2相加,结果存于调用该函数的变量中
void Rational::add(const Rational &r1, const Rational &r2)
{
	num = r1.num * r2.den + r2.num * r1.den;
	den = r1.den * r2.den;
	ReductFraction();
}
//multi函数将r1和r2相乘,结果存于调用该函数的变量中
void Rational::multi(const Rational &r1, const Rational &r2)
{
	num = r1.num * r2.num;
	den = r1.den * r2.den;
	ReductFraction();
}
//ReductFraction实现有理数的化简
//方法:找出num和den的最大公因子,让它们分别除以最大公因子
void Rational::ReductFraction()
{
	int tmp = (num > den) ? den : num;
	
	for (; tmp > 1; --tmp) 
		if (num % tmp == 0 && den % tmp ==0) 
		{
			num /= tmp; 
			den /= tmp; 
			break;
		}
}//也可用辗转相除法
// RationalApp.cpp
// 计算两个有理数的和与积
#include 
using namespace std;
#include "Rational.h" //使用有理数类
int main()
{
	int n, d;
 Rational r1, r2, r3; //定义三个有理数类的对象
	
 cout <<"请输入第一个有理数(分子 分母,如:2 3):"; 
	cin >> n >> d;
	r1.create(n,d);
	
	cout <<"请输入第二个有理数(分子 分母,如:3 8):"; 
	cin >> n >> d;
	r2.create(n,d);
	
 r3.add(r1, r2); //执行r3=r1+r2
	r1.display(); cout <<" + "; r2.display();
	cout <<" = "; r3.display(); cout << endl;
	
 r3.multi(r1, r2); //执行r3=r1*r2
	r1.display(); cout <<" * "; r2.display();
	cout <<" = "; r3.display(); cout << endl;
	system("pause");
 return 0;
}
/*
请输入第一个有理数(分子 分母,如:2 3):2 3
请输入第二个有理数(分子 分母,如:3 8):3 8
2/3 + 3/8 = 25/24
2/3 * 3/8 = 1/4
*/

-结尾-

免责声明
本站所有收录的学校、专业及发布的图片、内容,均收集整理自互联网,仅用于信息展示,不作为择校或选择专业的建议,若有侵权请联系删除!

大家都在看

职高与中职、高中有什么区别?

职高与中职、高中有什么区别?

职业高中也就是职高,这是一种针对培养职业技能人才的中等职业教育,与普通高中相比,职高更加注重实践性,更加贴近企业的需求。职高学生在学校中除了学习常规的语数外
2024-02-28
C语言一般用结构体来描述和封装较为复杂的事物

C语言一般用结构体来描述和封装较为复杂的事物

1结构体定义有理数及其操作#include<iostream>usingnamespacestd;structRationalT{/
2024-02-28
朝阳区发布学区学位预警师大附小接收预警符合“两个一致”条件

朝阳区发布学区学位预警师大附小接收预警符合“两个一致”条件

29日,长春晚报全媒体记者从长春市朝阳区教育局获悉,为进一步做好长春市朝阳区义务教育阶段学校招生工作,引导家长形成合理就学预期,保障义务教育学校
2024-02-28
风水堂:王朝感情深厚,耻为魏臣

风水堂:王朝感情深厚,耻为魏臣

曹植怎么死的谢邀。实名反对题主“曹植兄控”以及题主的西皮党小伙伴提出的观点。我上面那两句就是为了说出来爽一下题主请不要打我。……总之我又打开了知网。一般来说就这几种观点:A
2024-02-28
专科提前批和单招有什么区别?专科单招的区别

专科提前批和单招有什么区别?专科单招的区别

随着国家愈发重视高职专科学生的发展和就业后,也让越来越多的学生也开始选择进入专科提前批次进行学习,比如说专科提前批次的院校报考率相比较普通专科批次的录取人数就会高出很多
2024-02-28
(每日一题)后面附有一些有理数的题目及解析

(每日一题)后面附有一些有理数的题目及解析

后面附有一些有理数的题目及解析有理数【学习目标】1.掌握用正负数表示实际问题中具有相反意义的量;2.理解正数、负数、有理数的概念;3.掌握有理数
2024-02-28
(无忧考网)2023年春季开学时间一览,你家孩子达标了吗?

(无忧考网)2023年春季开学时间一览,你家孩子达标了吗?

2023年全国各省春季开学时间表 【#教育# #2023年全国各省春季开学时间表#】2023年春季开学将在春节后来临,各省市开学时间都陆续公布了!
2024-02-28
长春外国语学校一本线101人占比952%

长春外国语学校一本线101人占比952%

每年长春中考家长,都把目光都锁定在了选择师大、吉大等高中上,但家长却忽略一个问题,其实上高中就是为了进985、211这样的重点大学。
2024-02-28
多地确定新学期开学日期,你准备好了吗?

多地确定新学期开学日期,你准备好了吗?

大河票务网提供2020暑期什么时候开学?2020全国各地开学时间表有关的信息, 秋季学期即将到来,如何部署返校事宜是目前各地教育部门工作重点。在疫情尚未结束的特殊背景下
2024-02-28
高等职业教育是什么意思?

高等职业教育是什么意思?

高职属于高等教育,是职业技术教育的高等阶段,高职的教学更加偏重于技能的教学。高职教育由省政府管理,省政府会在国家政策的指导下,根据实际需要结合就业状况等,进行每年的招生。
2024-02-28