返回首页

你好

即时通讯相对较新的C,但我想成为相当好
  ;不只是做它通过一些主题。

所以现在每天IM提高了我的计划,试图了解更多的一块,而不是忘却什么
我已经学会了。

所以,现在IM使十进制到二进制的转换,但我不使用任何预先提出的"图书馆"或"类",否则,我觉得好像我还没有真正做什么。

我已经有工作的任何一个点盈"'XXX'的二进制的一段代码。XXX",但
现在im后点工作的一部分。
所以我拿出我的数字图书,并检查了如何做乘法2移动和编码工作得很好,所以一些分数。
然而使用,结束一个时代的无限循环,配发了,因为每次我得到的东西像0.60和行结束了我工作的地方,沿与0.60再次从而结束在一个无限循环。

我不知道如何让程序意义上的IM创造字符串中的重复。

改进的问题在这里。
我的问题是......这将是一个整洁的方法,使程序实现HES运行和无限循环?
是有一些方法,我可以做它的意义,其工作,它已经制定出的东西,它应该停止?

这是到目前为止的代码。


#include <cstdlib>

#include <iostream>

#include <string>

#include <math.h>



using namespace std;

double a;

 

double fracvalue(double x) 

{

 int z;            

       z = (x/1);

       a = x-z;

        return (a);

       }

 



 



int main(int argc, char** argv) {

    double x;

    int z, c;    

    cin >> x;

    double a =fracvalue(x)*2;

    cout << fracvalue(x) << "      " << a  << endl;//Checking if A and fracvalue are giving correct readings 

    string Bin = ".";

    

    for (int = i=;i < 20;i++)  //<<-- THIS was while(a != 0.0) but it never seemed to 

                      //stop even when it gets to 0.0 also it doesnt write out the complete binary this way

                      //sometimes only leaving dots or partial BIN numbers.

    {

          if (a > 1)

          {

                Bin = Bin +'1';

                a = a-1;

                cout << a << endl;

                a = a*2;

                cout << a << endl;}

                

             if (a < 1)

                {

                    Bin = Bin + '0';

                    a = a*2;

                    

                    }

                    cout << Bin << endl;

          }

          

          

          

    system("PAUSE");

    return 0;

}
出于某种原因,它使上线呻吟
ž=(X / 1);在功能fracvalue,有趣的是,我没有碰这样的代码:它只是不想再运行

反正......这似乎给正确的二进制如果我插入大量的分数,但简单的出来只有0或1,而不是两个。
然而,更大的"(下而!= 0.0)",将永远不会结束,因为数学本身的无限循环。

谢谢

回答

评论会员:游客 时间:2012/02/07
|Cartomania:无尽的循环都在不同的大小取决于什么值插入顺便说一句NBSP我做了一个2个国际单项体育联合会的主要功能之间的ELSE语句
查克・奥图尔
评论会员:游客 时间:2012/02/07
自从我第一次计算机科学类1966年,一直在处理浮点数的红旗。从来没有测试两个浮点数的确切平等,特别是如果其中一个被计算你原有的循环结束时,计算值的"A"正是等于"0.0"。这是一个红旗。浮点操作总是留下一些累积分数的一部分,周围铺设。与此代码可能有错误的其他事情,我没有尝试调试,只评论"循环结束条件"--------------------------好吧,我跑你的程序,并得到了这个奇怪的输出。我没有什么这个方案是应该做的想法,不知道什么是错,或您所期望的输出。它并没有给我的感觉。codeprelang="vb"spanclass="code-digit"123/span.spanclass="code-digit"456/spanspanclass="code-digit"0/span.spanclass="code-digit"456/spanspanclass="code-digit"0/span.spanclass="code-digit"912/span.spanclass="code-digit"0/spanspanclass="code-digit"0/span.spanclass="code-digit"824/spanspanclass="code-digit"1/span.spanclass="code-digit"648/span.spanclass="code-digit"01/spanspanclass="code-digit"0/span.spanclass="code-digit"648/spanspanclass="code-digit"1/span.spanclass="code-digit"296/span.spanclass="code-digit"011/spanspanclass="code-digit"0/span.spanclass="code-digit"296/spanspanclass="code-digit"0/span.spanclass="code-digit"592/span.spanclass="code-digit"01110/spanspanclass="code-digit"0/span.spanclass="code-digit"184/spanspanclass="code-digit"0/span.spanclass="code-digit"368/span.spanclass="code-digit"0111010/span.spanclass="code-digit"01110100/spanspanclass="code-digit"0/span.spanclass="code-digit"472/spanspanclass="code-digit"0/span.spanclass="code-digit"944/span.spanclass="code-digit"0111010010/spanspanclass="code-digit"0/span.spanclass="code-digit"888/spanspanclass="code-digit"1/span.spanclass="code-digit"776/span.spanclass="code-digit"01110100101/spanspanclass="code-digit"0/span.spanclass="code-digit"776/spanspanclass="code-digit"1/span.spanclass="code-digit"552/span.spanclass="code-digit"011101001011/spanspanclass="code-digit"0/span.spanclass="code-digit"552/spanspanclass="code-digit"1/span.spanclass="code-digit"104/span.spanclass="code-digit"0111010010111/spanspanclass="code-digit"0/span.spanclass="code-digit"104/spanspanclass="code-digit"0/span.spanclass="code-digit"208/span.spanclass="code-digit"011101001011110/span.spanclass="code-digit"0111010010111100/span.spanclass="code-digit"01110100101111000/spanspanclass="code-digit"0/span.spanclass="code-digit"664/spanspanclass="code-digit"1/span.spanclass="code-digit"328/span.spanclass="code-digit"011101001011110001/spanspanclass="code-digit"0/span.spanclass="code-digit"328/spanspanclass="code-digit"0/span.spanclass="code-digit"656/span.spanclass="code-digit"01110100101111000110/spanspanclass="code-digit"0/span.spanclass="code-digit"312/spanspanclass="code-digit"0/span.spanclass="code-digit"624/span.spanclass="code-digit"0111010010111100011010/spanspanclass="code-digit"0/span.spanclass="code-digit"248/spanspanclass="code-digit"0/span.spanclass="code-digit"496/span.spanclass="code-digit"011101001011110001101010/span.spanclass="code-digit"0111010010111100011010100/spanspanclass="code-digit"0/span.spanclass="code-digit"984/spanspanclass="code-digit"1/span.spanclass="code-digit"968/span.spanclass="code-digit"01110100101111000110101001/span/pre/code
RKnGl
评论会员:游客 时间:2012/02/07
嗯..在我看来,他的代码应该为二进制转换成十进制数在2个阶段:1。转换非小数部分2。转换小数部分(报价:报价::|