fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. int liczpoprzecinku = 0;
  8.  
  9. struct ulamek {
  10. long long int licznik;
  11. long long int mianownik;
  12. };
  13.  
  14. int znaknaint(char znak){
  15. switch (znak){
  16. case '0':
  17. return 0;
  18. break;
  19. case '1':
  20. return 1;
  21. break;
  22. case '2':
  23. return 2;
  24. break;
  25. case '3':
  26. return 3;
  27. break;
  28. case '4':
  29. return 4;
  30. break;
  31. case '5':
  32. return 5;
  33. break;
  34. case '6':
  35. return 6;
  36. break;
  37. case '7':
  38. return 7;
  39. break;
  40. case '8':
  41. return 8;
  42. break;
  43. case '9':
  44. return 9;
  45. break;
  46. default:
  47. return 0;
  48. break;
  49. }
  50. }
  51.  
  52. long long int tworzliczbe(string tworzstring){
  53. long long int liczbazam = 0;
  54. unsigned short int licznik = 0;
  55. unsigned long long int mnoznik = 1;
  56. bool przecinek = false;
  57. liczpoprzecinku = 0;
  58.  
  59. for (int i=tworzstring.length()-1; i>=0; i--){
  60. if (tworzstring[i] != '.'){
  61. licznik++;
  62. if (tworzstring[i] == '-')
  63. liczbazam *= -1;
  64. liczbazam += znaknaint(tworzstring[i])*mnoznik;
  65. mnoznik *= 10;
  66. if (!przecinek)
  67. liczpoprzecinku++;
  68. }
  69. else if (tworzstring[i] == '.')
  70. przecinek = true;
  71. }
  72. return liczbazam;
  73. }
  74.  
  75.  
  76.  
  77. int main(){
  78. string lolstring = "";
  79.  
  80. cout << endl << endl << endl;
  81.  
  82. cout << "Podaj liczbe: ";
  83. lolstring = "2345.433422345"; //komplacja online, na sztywno
  84.  
  85. ulamek ulamek1, ulamek2;
  86.  
  87. ulamek1.licznik = tworzliczbe(lolstring);
  88. ulamek1.mianownik = pow(10, liczpoprzecinku);
  89.  
  90. cout << lolstring << " - lolstring" << endl;
  91. cout << ulamek1.licznik << " - licznik" << endl;
  92. cout << ulamek1.mianownik << " - mianownik" << endl;
  93.  
  94. return 0;
  95. }
Success #stdin #stdout 0.02s 2816KB
stdin
Standard input is empty
stdout


Podaj liczbe: 2345.433422345  - lolstring
2345433422345  - licznik
1000000000  - mianownik