【c++程序】分数的约分

#include<iostream>
using namespace std;
class Fract
{
	int n;
	int d;
public:
	Fract():n(0),d(1){};
	Fract(int an,int ad):n(an),d(ad)
	{
		reduce();
	}
	void reduce()
	{
		if(n<0){d=-d;n=-n;}
		if(d==0){cout<<"d==0!"<<endl;}
		int absn=n<0?-n:n;
		for(int i=d;i>1;i--)
		{
			if(n%i==0&&d%i==0)
				n/=i,d/=i;
			break;
		}
	}
	void show()
	{
		cout<<n<<'/'<<d<<endl;
	}
	double value()
	{
		return (double)n/d;
	}
};
class Dai:public Fract
{
	int i;
public:
	Dai():i(0){}
	Dai(int ai,int an,int ad):i(ai),Fract(an,ad){}
	void show()
	{
		cout<<i<<'(';
		Fract::show();
	}
	double value()
	{
		return i+Fract::value();
	}
};
int main()
{
	Dai d1;
	Dai d2(2,12,16);
	d1.show();
	cout<<"d1="<<d1.value()<<endl;
	d2.show();
	cout<<"d2="<<d2.value()<<endl;
	cout<<"================================="<<endl;
	Fract f1(12,16);
	Fract f2;
	f1.show();
	cout<<"f1="<<f1.value()<<endl;
	f2.show();
	cout<<"f2="<<f2.value()<<endl;

}

时间: 2024-09-07 03:19:16

【c++程序】分数的约分的相关文章

C#趣味程序----分数之和

问题:求这种四个自然数p,q,r,s(p<=q<=r<=s).使得等式1/p + 1/q +1/r +1/s=1成立. 分析:将原式同分,化简整理后得到:2<=p<5,p<=q<7,q<r<13. using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int p, q, r, s, n = 0; for (p = 2

一个分数怎样约分?想知道的速度了。。。

#include<stdio.h>int main(){ int n,m,a,b,c; printf("请输入分子和分母:\n"); scanf("%d%d",&n,&m); a=n; b=m; if(n>m) {  do  {   c=a%b;   a=b;   b=c;  }while(c!=0);  n=n/a;        m=m/a; }    else {        do  {   c=b%a;          

小学生300道练习题程序及问题

题目要求:自动生成一百以内数的四则运算:同时也支持真分数的四则运算: 根据题目要求,决定使用随机数函数srand(),rand()函数来产生操作数,rand()%100即可产生一百以内的数.rand()%4来产生0~3四个数来选择四则运算. #include<stdio.h>#include<time.h>#include<Windows.h>#include<stdlib.h>void main(){   int a, b,c,d,i,op,x;   sr

四则运算改上改

#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> main() { int i,j,k,e,d,d1,e1,l,f; int a,b,c,g,h,m,n,o; int q=0,w=0,q1=0,w1=0,q2=0,w2=0; float sum; srand((int)time(0)); printf("现在进入四则运算测试,输入-1退出测试!\n\n&

四则运算2.0版

#include <stdio.h> #include <stdlib.h> main() { printf("\n\t欢迎使用四则运算练习软件\n\n"); Chioce(); } Chioce() { int ch1=0; printf("\t1.整数运算\n\t2.真分数运算\n\t请选择:"); scanf("%d",&ch1); if(ch1==1) { ZhengShuYunSuan(); } FenS

软件工程第一周作业----小学生四则运算题

实现功能: 1.整数和真分数的四则运算, 运算数和运算结果都可以是整数或分数: 2.能生成任意个运算数的算式(不超过100): 3.算式的个数.数的范围.运算数的个数由命令行输入: 4.不支持括号. 实现思路: 1.定义算式类,数据成员包含两个数组,分别存储运算数和算符:以及算式的结果: 方法成员包括一个初始化函数,随机生成算式并计算结果:一个输出函数,用来打印算式:以及其他辅助函数. 2.定义运算数类,数据成员包含两个整数,即分子和分母. 3.在主类里调用算式类的方法,来生成和输出算式:接受用

软件工程第一周作业----小学生四则运算题2.0

实现功能: 1.整数和真分数的四则运算, 运算数和运算结果都可以是整数或分数: 2.能生成任意个运算数的算式: 3.算式的个数.数的范围.运算数的个数由命令行输入: 4.保证生成的算式不重复; 5.支持括号. 实现思路: 1.新定义了表达式类,数据成员包含表达式的值,表达式的字符串形式,以及两个子表达式中间的算符. 方法成员包括两个构造函数,其中一个随机生成算式并计算结果,另一个是默认的,用来分配空间:一个输出函数,用来打印算式:以及其他辅助函数. 构造函数的思路:构造两个较短的子表达式,然后用

【基础算法】基础算法【转载】

1. 最大公约数 问题:求两个自然数的最大公约数. 分析:这个是基础的数学问题,最大公约数指两个数字公共的约数中最大的,例如数字6的约数有1.2.3.6,数字9的约数有1.3.9,则数字6和数字9的公共约数有1和3,其中3是最大的公约数. 第一种思路:从1开始循环,每次把符合要求(即同时是两个数字的约数)的值都存储起来,那么最后一个存储起来的就是最大的约数. E:\博客-基础算法-代码\1_a_max_divisor.php: [php] view plain copy <?php /** * 

四则运算程序(java基于控制台)

一.题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围,例如 Myapp.exe -r 10 将生成10以内(不包括10)的四则运算题目.该参数可以设置为1或其他自然数.该参数必须给定,否则程序报错并给出帮助信息. 3. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数. 4. 每道题目中出现的运算符个数不超过