Неделя, 04 Декември 2011 13:09

бройна система - реално число

Написана от 
Оценете
(0 гласа)

Да се състави програма (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; 
} 
Прочетена 1414 пъти Последно променена в Неделя, 04 Декември 2011 13:36