Да се състави програма (C++), чрез която по въведено реално число от интервала [0.01..0.99] от 10-ичната бройна система се представя с точност до 7-ми разряд в 2-ична бройна система.
Пример: 0.0125 Изход .0000001
Решение
//Умножавайте последователно с 2. Разрядът в двоичното число става 1 само, ако произведението е >=1.
#include <iostream>
#include <cmath>
using namespace std;
int const broi=7;//broj razrqdi
void brojna (double ch, char mas[])
{ int i,n=1;
double a;
int b=(int)ch;
a=ch-b;
mas[0]='.';
for (i=0;i<broi;i++)
{ a*=2;//chisloto se umnovawa po 2. W dwoichnoto se pishe 0 ili 1
//ako proizwedenieto e <0 ili >0
b=(int)a;//cqlata chast, ako ima takawa
mas[n]='0'+b;
n++;//poziciq za sledwashiq znak
a-=b;//interesuwa ni samo ostawashata sled desetichnata tochka stojnost
}
mas[n]='\0';//posledniq sluveben znak
}//void brojna
int main()
{double chis;
char mas[40],ose;
cout<<"Da se systawi programa, chrez koqto se wywevdat realni chisla\n";
cout<<"ot interwala [.01..0.99] ot 10-ichnata brojna sistema i se\n";
cout<<"izwevdat s tochnost do 7-mi razrqd w 2-ichna brojna sistema.\n";
cout<<"Primer: 0.0125 Izhod .0000001.\n";
do {
cout<<"Wywedete chislo ot 10-ichna brojna sistema [10 ..100001]: ";cin>>chis;
chis=fabs(chis);
brojna (chis,mas);
cout<<"Poluchenoto chislo, sled desetichnata zapetaq, e: "<<mas<<endl;
cout<<"She wywevdate li drugi stojnosti <y/n>: ";cin>>ose;
}while (ose=='y');
return 0;
}