fork download
  1. /* Program to converter floating number to hexadecimal code */
  2. #include <iostream>
  3. #include <cmath>
  4. #include <iomanip>
  5. #include <math.h>
  6.  
  7. void printfloat(float);
  8.  
  9. int main()
  10. {
  11. float number = 0.0;
  12. int how_many_step = 0;
  13. std::cin >> how_many_step;
  14. while (how_many_step > 0)
  15. {
  16. std::cin >> number;
  17. printfloat( number );
  18. --how_many_step;
  19. }
  20. return 0;
  21. }
  22.  
  23. void printfloat(float n)
  24. {
  25. std::string s_intiger_part;
  26. std::string s_decimal_part;
  27. std::string final_binary;
  28. int binary_intiger[8] {};
  29. int binary_decimal[8] {};
  30. float intiger_part = 0.0; //czesc calkowita
  31. float decimal_part = 0.0; //czesc ulamkowa
  32. decimal_part = std::modf( n , &intiger_part );
  33. std::cout << "czesc calkowita" << intiger_part << " czesc ulamkowa " << decimal_part << std::endl;
  34. int intiger_number = intiger_part;
  35.  
  36. int index = 0;
  37. do
  38. {
  39. if( intiger_number % 2 == 0 )
  40. {
  41. std::cout << "mod 0" << std::endl;
  42. s_intiger_part += std::to_string(0);
  43. intiger_number /= 2;
  44. if ( intiger_number == 1 )
  45. ++index;
  46. }
  47. if ( intiger_number % 2 == 1)
  48. {
  49. std::cout << "mod 1" << std::endl;
  50. s_intiger_part += std::to_string(1);
  51. intiger_number /= 2;
  52. if ( intiger_number == 1 )
  53. ++index;
  54. }
  55. }
  56. while ( index != 1 );
  57. for ( int i = s_intiger_part.size() ; i >= 0 ; --i )
  58. {
  59. std::cout << "dana liczba: " << s_intiger_part[i] << std::endl;
  60. final_binary += s_intiger_part[i];
  61. }
  62. final_binary += ".";
  63. index = 0;
  64. std::cout << "liczba: " << intiger_part << " w binarnym to: " << s_intiger_part << std::endl;
  65. std::cout << "liczba: " << intiger_part << " w binarnym to: " << final_binary << std::endl;
  66. intiger_number = 0;
  67. float decimal = decimal_part;
  68. do
  69. {
  70. // decimal *= 2.0;
  71. decimal = decimal + decimal;
  72.  
  73. std::cout.setf( std::ios::fixed , std::ios::basefield );
  74. std::cout << std::setprecision(4);
  75. std::cout << "decimal: " << /*ceilf(decimal)*/ decimal << std::endl;
  76. std::cout << "binarka: " << s_decimal_part << std::endl;
  77. if ( decimal > 1 )
  78. {
  79. s_decimal_part += std::to_string(1);
  80. decimal -= 1.0;
  81. }
  82. else if ( decimal > 0 && decimal < 1 )
  83. s_decimal_part += std::to_string(0);
  84. else if ( decimal == 1 || decimal == 0 )
  85. {
  86. if ( decimal == 1 )
  87. s_decimal_part += std::to_string(1);
  88. else if ( decimal == 0 )
  89. s_decimal_part += std::to_string(0);
  90. ++index;
  91. }
  92. std::cout << "binarka: " << s_decimal_part << std::endl;
  93.  
  94.  
  95. }
  96. while ( index != 1 );
  97. std::cout << "czesc ulamkowa: " << decimal_part << " w binarnym to: " << s_decimal_part << std::endl;
  98. std::cout << std::endl;
  99.  
  100. }
  101.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
Standard output is empty