第五周作业 2

原创 2012年03月21日 07:31:10

 /* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* 文件名称:                              
* 作    者: 计114-4   孙建朋                         
* 完成日期: 2012  年  3 月 19  日
* 版 本 号: 2012031902         
 
* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 分数的化简,放大,输出。
* 程序输出: 按要求输出
* 程序头部的注释结束
*/ 

 

#include<iostream>   
using namespace std;  
int gcd(int x,int y);    //求最大公约数   
class CFraction  
{private:  
int nume;  // 分子   
int deno;  // 分母   
public:  
    CFraction(int nu=0,int de=1); //构造函数,初始化用   
	
    void set(int nu=0,int de=1);    //置值,改变值时用   
    void input();               //按照"nu/de"的格式,如"5/2"的形式输入   
    void simplify();            //化简(使分子分母没有公因子)   
    void amplify(int n);            //放大n倍,如2/3放大5倍为10/3   
    void output(int style=0);       //输出:以8/6为例,style为0时,输出8/6;     
};  
//结构体   
CFraction::CFraction(int nu,int de)  
{  
    if(de!=0)  
    {  
        nume=nu; 
        deno=de;  
    }      
	else  
    {  
        cout<<"分母不能为零"<<endl;  
        exit(0);  
    }  
}  
//设定分子分母的值;   
void CFraction::set(int nu,int de)  
{  
    if(de!=0)  
    {  
        nume=nu;         
		deno=de;  
    }  
}  
//按照"nu/de"的格式,如"5/2"的形式输入   
void CFraction::input()  
{  
    char c;  
    while(1)  
    {  
        cin>>nume>>c>>deno;  
        if(c!='/')  
            cout<<"格式不对,请从新输入:"<<endl;  
		else if(deno==0)  
            cout<<"分母不能为零,请从新输入:"<<endl;  
        else  
            break;  
    }  
}  
//化简(使分子分母没有公因子)   
void CFraction::simplify()  
{  
    int n=gcd(nume,deno);  
	nume/=n;  
    deno/=n;  
}  
//求最大公约数;   
int gcd(int x,int y)  
{  
    int r;  
    while(y!=0)  
    {  
        r=x%y;  
        x=y;  
        y=r;  
    }  
    return x;  
}  
//放大n倍,如2/3放大5倍为10/3   
void CFraction::amplify(int n)  
{  
    nume*=n;  
}  
//输出:以8/6为例,style为0时,输出8/6;   
void CFraction::output(int style)  
{  
    int i;  
    switch(style)  
    {  
	case 0:  
        cout<<nume<<'/'<<deno<<endl;  
		break;  
    case 1:  
        i=gcd(nume,deno);  
		cout<<(nume/i)<<'/'<<(deno/i)<<endl;  
        break;  
    case 2:  
        int nu,de;  
        i=gcd(nume,deno);  
        nu=nume/i;  
        de=deno/i;  
        cout<<(nume/deno)<<"("<<(nu/de)<<'/'<<de<<")"<<endl;  
        break;  
    default:  
        cout<<nume<<'/'<<deno<<endl;  
    }  
}  
int main()  
{  
    CFraction c1;  
    c1.output(0);  
    c1.set(24,14);  
    cout<<"假分数形式为:"<<endl;  
    c1.output(0);  
    cout<<"扩大4倍后的值为:"<<endl;  
    c1.amplify(4);  
    c1.output(0);  
    c1.simplify();  
    cout<<"代分数形式为:"<<endl;  
    c1.output(2);  
    cout<<"请输入您想要的分数:"<<endl;  
    c1.input();  
    c1.simplify();  
    cout<<"化简后的值为:"<<endl;  
    c1.output(1);  
    system("pause");  
    return 0;  
}


相关文章推荐

云课堂java-第五周编程作业2-井字棋

题目内容: 嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。 你的程序先要读入一个整数n,范围是[3,100],这表示井字棋棋盘的边长。比如n=3就表...

第五周作业2(LeetCode76)

1. 题目描述Given a string S and a string T, find the minimum window in S which will contain all the char...

第五周作业2

#include using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 publ...

第五周作业——Dijkstra算法的实现

作业要求: 对加权图(tinyEWD.txt,mediumEWD.txt),计算从顶点0出发到其他顶点的最短路径,要求输出其从顶点0到每个顶点的路径,以及相应的路径距离。类名:GraphDijkstr...

第五周作业(一)

* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: ...
  • cailwen
  • cailwen
  • 2012年03月18日 16:32
  • 282

第五周作业——有向图邻接表表示及反向图构造

1. 有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。 邻接表表示示例如下: ...

第五周作业

又是一周一次的上机课了

第五周作业——有向图邻接表表示及反向图构造

有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。类名:GraphReverse...

第五周作业——有向图邻接表表示及反向图构造

1. 有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。类名:GraphRevers...

作业——在线学习Android课程之第五周

第一节 使用‘SharedPreferences’方便地存储数据1、什么是SharedPreferences?SharedPreferences是Android平台上一个轻量级的存储类,用来保存应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第五周作业 2
举报原因:
原因补充:

(最多只允许输入30个字)