[C++]小数转化为分数(class)

/*Rational.cpp*/
#include "Rational.h"
#include<iostream>
#include<math.h>
#include<string>

using namespace std;

void Rational::change(string num, int  fz, int  fm)
{
	bool flag = 0;
	char ch;
	for (int i = 0; i < num.length(); i++)
	{
		ch = num[i];
		if (ch == '.')	flag = 1;
		else
		{
			fz = fz * 10 + ch - '0';			/*fz==分子,fm==分母*/
			if (flag) fm *= 10;
		}
	}

	for (int i = 2; i <= fz; i++)				/*以下为化简*/
	{
		if (fz%i == 0 && fm%i == 0)
		{
			fz /= i;
			fm /= i;
			i = 1;
		}
	}
	cout << fz << '/' << fm << endl;
	return;
}
/*Rational.h*/
#include<string>
#include<iostream>

using namespace std;

class Rational
{
public:
	
	void change(string num,int fz,int fm);

private:
	int fz;
	int fm;
	int zs;
};
/*main.cpp*/
#include<iostream>
#include<string>
#include"Rational.h"

using namespace std;

void main()
{
	string num;
	cout << "please enter a double number" << endl;
	cin >> num;

	while (!cin)
	{
		cin.clear();
		cout << "error" << endl;
		cout << "please enter a double number" << endl;
		cin >> num;
	}
	Rational fenshu;
	int fz = 0, fm = 1;
	fenshu.change(num, fz, fm);
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值