DYBOY's Blog

[C++]求分数转小数得到小数循环节

编程程序,把输入的有理数转换为无限循环小数

例:

输入 3 7

输出 0.[428571]

C++实现:

//输出循环小数,中括号包括循环节
//输入 3 7
//输出 0.[428571]  

/*
*    @name : main.cpp 
*    @author: DYBOY
*    @time: 2018/03/09
*/

#include <iostream> 
using namespace std;

//main 函数 
int main(){
    int zi,mu,new_beichushu,ini_num = 0;     //分子,分母 ,余数 
    cout<<"Please input the fenzi(x) & fenmu(y)->(<0x<y):";
    cin>>zi>>mu;
    new_beichushu = zi;    //被除数为分子 
    int arr[1000],shang[1000];    //临时存储 
    for(int i = 0;i<1000;i++){ arr[i] = -1; shang[i] = 0; }    //初始化 
    while(new_beichushu != 0 && arr[new_beichushu] == -1) {    //当被除数等于0的时候,表示已经除尽了 
        arr[new_beichushu] = ini_num;    //如果商中出现相同数组下标 ,此处为之后判断做出依据 
        new_beichushu = new_beichushu * 10; //除法规则 
        ini_num++;
        shang[ini_num] = new_beichushu/mu;    //整除存储商 
        new_beichushu = new_beichushu % mu;    //得到余数 
    }
    //输出 
    cout<<"zi/mu = 0.";
    if(new_beichushu != 0){
        for(int i = 1;i<=arr[new_beichushu];i++){ cout<<shang[i]; }
        cout<<"[";
        for(int i=arr[new_beichushu]+1;i<=ini_num;i++){ cout<<shang[i]; }
        cout<<"]";
    }
    else{
        for(int i=1;i<=ini_num;i++){ cout<<shang[i]; }
    }
    return 0;
}

运行结果:

运行结果

版权声明:《 [C++]求分数转小数得到小数循环节 》为DYBOY原创文章未经允许不得转载。

 DYBOY
 作者签名:安全从业者,爱好安全产品开发,渗透测试,Web漏洞研究

发表评论:

用心评论~

TOP
Powered by Emlog | Theme:Monkey by DYBOY
渝ICP备16008772号
sitemap