第四周项目-2

#include<iostream>

using namespace std;

class CFraction

{

private:

int nume;  // 分子

int deno;  // 分母

void simplify();            //化简(使分子分母没有公因子)

public:

CFraction(int nu = 0, int de = 1);   //构造函数,初始化用

void set(int nu , int de);    //置值,改变值时用

void input();               //按照"nu/de"的格式,如"5/2"的形式输入

void amplify(int n);        //放大n倍,如2/3放大5倍为10/3

void output(int style);

//输出:以8/6为例,style为0时,原样输出8/6;

//style为1时,输出化简后形式4/3;

//style为2时,输出1(1/3)形式,表示一又三分之一;

//style为3时,用小数形式输出,如1.3333;

//默认方式0

};

CFraction::CFraction(int nu, int de)

{

nume = nu;

deno = de;

}

void CFraction::set(int nu = 0, int de = 1)

{

nume = nu;

deno = de;

}

void CFraction::input()

{

cout << "按照 分子/分母 的格式,如 5/2 的形式输入." << endl << "请输入: ";

char a;

cin >> nume >> a >> deno;

while (a != ‘/‘||deno == 0)

{

cout << "按照 分子/分母 的格式,如 5/2 的形式输入." << endl << "请重新输入: ";

cin >> nume >> a >> deno;

}

}

void CFraction::simplify()

{

if (nume == 0)

cout << "无需化简" << endl;

else if (nume == deno)

{

nume == deno == 1;

}

else

{

int r, x = nume, y = deno;

if (x > y)

{

r = x;

x = y;

y = r;

}

r = 1;

while (r != 0)

{

r = y%x;

y = x;

x = r;

}//最大公约数为y

nume = nume / y;

deno = deno / y;

}

}

void CFraction::amplify(int n)

{

nume = nume*n;

deno = deno*n;

}

void CFraction::output(int style=0)

{

if (nume == 0)

cout<<"结果为: "<< 0;

else if (nume == deno)

{

cout << "结果为: " << 1;

}

else

{

switch (style)

{

case 0: cout << "结果为: "<< nume << ‘/‘ << deno; break;

case 1:{simplify(); output(); break; }

case 2:

{

if (nume <= deno)

output(1);

else

{

int a=0;

while (nume > deno)

{

nume = nume - deno;

++a;

}

cout << "结果为: " << a << "(" << nume << ‘/‘ << deno << ")"<<endl;

}

break;

}

case 3:cout << "结果为: " << (double)nume / (double)deno << endl;

}

}

}

int main()

{

CFraction a;

a.input();

int n;

cout << "请输入放大倍数:";

cin >> n;

while (n == 0)

{

cout << "不允许的操作.请重新输入放大倍数: ";

cin >> n;

}

a.amplify(n);

a.output();

cout << endl << "请输入你需要的输出形式(默认形式为 0),以8/6为例:" << endl << endl;

cout << "0.原样输出8/6" << endl;

cout << "1.输出化简后形式4/3" << endl;

cout << "2.输出1(1 / 3)形式,表示一又三分之一" << endl;

cout << "3.用小数形式输出,如1.3333" << endl;

cin >> n;

while (n != 0 && n != 1 && n != 2 && n != 3)

{

cout << "请在0--3中选择:";

cin >> n;

}

a.output(n);

while (1){}

}

时间: 2024-11-06 07:35:32

第四周项目-2的相关文章

HeyWeGo第四周项目总结

HeyWeGo第四周项目总结 项目内容 使用java程序开发一款扫雷游戏 游戏项目规划: 确定游戏中方块格子的个数 确定游戏中地雷的个数(初始10个),完成布雷 计算每个方块周围的雷数,在方块周围本身没有地雷的情况下,统计周围地雷的个数 若周围没有地雷则翻开周围的空白方格,直到周围有附近地雷的格子 设计一个检测是否挖完所有的雷的方法 设定左键点击为翻开 设定右键点开为标记 项目进展 之前两周 界面的设计 setTitle("扫雷"):设定程序名称 setBackground(Color

十四周 项目 1 动物这样叫

#include <iostream> #include <string> using namespace std; class Animal { public: virtual void cry() { cout<<"不知哪种动物,让我如何学叫?"<<endl; } }; class Mouse:public Animal { public: Mouse(string nam,char s):name(nam),sex(s) {} vo

第四周项目一三角形类的构造函数-1

<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15.5555562973022px; line-height: 35px;">[项目1-三角形类的构造函数]</span><br style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15.55

第四周项目二-分数类的雏形

[项目2-分数类的雏形] C++中提供了多种基本的数据类型.实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理复数),再如分数.我们可以自定义类支持这些数据类型. 本任务将设计一个简单的分数类,完成对分数的几个运算.一则巩固基于对象编程的方法,二则也为运算符重载等积累些感性认识. 分数类的声明为: class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de

第四周 项目中的白盒测试

关于白盒测试的知识点,结合你的项目实践,就可以得出如下题目: 白盒测试有几种,请结合你的代码片段,一一举例说明,并给出测试用例. 白盒测试,书上叫做白箱测试(书上256页):指的是再设计的过程中,设计者可以"看到"软件系统的内部结构,并使用软件的内部结构和知识来选择测试数据级具体的测试方法."白箱"并不是一个精确的说法,因为把箱子涂成白色,同样也看不见箱子里的东西,有人建议使用“玻璃箱”来表示. 详细介绍见:http://baike.baidu.com/link?u

第十四周 项目三 电子词典

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月3日 *版 本 号:v1.0 */ /*项目3-OOP版电子词典] 做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个, 英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词,显示词性和中文释义. 提示1:如果要用OOP完成这个词典(当然也

第十四周项目3-OOP版电子词典

做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词,显示词性和中文释义. 提示1:如果要用OOP完成这个词典(当然也可以用OO方法实现),可以定义一个Word类表示一个词条,其中的数据成员string english; 表示英文单词,string chinese;表示对应中文意思,string word_class;表示该词的词性:还可以定义一个Dictionary类,

第四周 项目二-分数类的雏形

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: .cpp *作 者: 冷基栋 *完成日期:2014年3月29日 *版 本 号:v1.0 */ 问题 C++中提供了多种基本的数据类型.实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理复数),再如分数.我们可以自定义类支持这些数据类型. 本任务将设计一个简单的分数类,完成对分数的几个运算.一则巩固基于对象编程的方法,二则也为运算符重载等积累些感性认识

第十四周 项目一 小玩文件

<span style="font-size:18px;">[项目1 - 小玩文件] (1)下面程序的功能是统计文本文件abc.txt中的字符个数,</span> <span style="font-size:18px;">#include <iostream> #include <cstdlib> #include <fstream>// //fstream提供了三个类,用来实现c++对文件的

第四周 项目四-指向学生类的的指针

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: .cpp *作 者: 冷基栋 *完成日期:2014年3月29日 *版 本 号:v1.0 */ 问题 设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5