/* Program to converter floating number to hexadecimal code */
#include <iostream>
#include <cmath>
#include <iomanip>
#include <math.h>
void printfloat(float);
int main()
{
float number = 0.0;
int how_many_step = 0;
std::cin >> how_many_step;
while (how_many_step > 0)
{
std::cin >> number;
printfloat( number );
--how_many_step;
}
return 0;
}
void printfloat(float n)
{
std::string s_intiger_part;
std::string s_decimal_part;
std::string final_binary;
int binary_intiger[8] {};
int binary_decimal[8] {};
float intiger_part = 0.0; //czesc calkowita
float decimal_part = 0.0; //czesc ulamkowa
decimal_part = std::modf( n , &intiger_part );
std::cout << "czesc calkowita" << intiger_part << " czesc ulamkowa " << decimal_part << std::endl;
int intiger_number = intiger_part;
int index = 0;
do
{
if( intiger_number % 2 == 0 )
{
std::cout << "mod 0" << std::endl;
s_intiger_part += std::to_string(0);
intiger_number /= 2;
if ( intiger_number == 1 )
++index;
}
if ( intiger_number % 2 == 1)
{
std::cout << "mod 1" << std::endl;
s_intiger_part += std::to_string(1);
intiger_number /= 2;
if ( intiger_number == 1 )
++index;
}
}
while ( index != 1 );
for ( int i = s_intiger_part.size() ; i >= 0 ; --i )
{
std::cout << "dana liczba: " << s_intiger_part[i] << std::endl;
final_binary += s_intiger_part[i];
}
final_binary += ".";
index = 0;
std::cout << "liczba: " << intiger_part << " w binarnym to: " << s_intiger_part << std::endl;
std::cout << "liczba: " << intiger_part << " w binarnym to: " << final_binary << std::endl;
intiger_number = 0;
float decimal = decimal_part;
do
{
// decimal *= 2.0;
decimal = decimal + decimal;
std::cout.setf( std::ios::fixed , std::ios::basefield );
std::cout << std::setprecision(4);
std::cout << "decimal: " << /*ceilf(decimal)*/ decimal << std::endl;
std::cout << "binarka: " << s_decimal_part << std::endl;
if ( decimal > 1 )
{
s_decimal_part += std::to_string(1);
decimal -= 1.0;
}
else if ( decimal > 0 && decimal < 1 )
s_decimal_part += std::to_string(0);
else if ( decimal == 1 || decimal == 0 )
{
if ( decimal == 1 )
s_decimal_part += std::to_string(1);
else if ( decimal == 0 )
s_decimal_part += std::to_string(0);
++index;
}
std::cout << "binarka: " << s_decimal_part << std::endl;
}
while ( index != 1 );
std::cout << "czesc ulamkowa: " << decimal_part << " w binarnym to: " << s_decimal_part << std::endl;
std::cout << std::endl;
}