daily pastebin goal
17%
SHARE
TWEET

Untitled

a guest Jan 12th, 2018 44 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. double fstd(char *string)
  2. {
  3.     int counter = 0;                                        // счетчик для количества цифр
  4.     int length = strlen(string);                           
  5.     int i = 0; 
  6.     double dnum = 0;                                        // конечное число
  7.     int inum = 0;                                              
  8.     while (*(string + i) != '\0')                           // проверяю, является ли число double'ом
  9.     {                                                       // т.е. смотрю количество цифр
  10.         if (*(string + i) > 47 && *(string + i) < 58)
  11.             counter++;
  12.         i++;
  13.     }
  14.     if (counter == length - 1)                              // если оно меньше на единицу, чем длина всей строки
  15.     {                                                       // (потому что точечка) )))))))))))
  16.         i = 0;                                              // то начинаем процесс
  17.         int counter = 0;
  18.         while (*(string + i) != '.')                        // количество цифр до запятой
  19.         {
  20.             counter++;
  21.             i++;
  22.         }
  23.         double mul = 10;
  24.         i = 0;
  25.         counter--;
  26.         while (*(string + i) != '.')                        // складываю целую часть в число
  27.         {
  28.             dnum += ((int)*(string + i) - 48) * pow(mul, counter);
  29.             counter--;
  30.             i++;
  31.         }
  32.         i = 0;
  33.         counter = 0;
  34.         bool check = false;
  35.         while (*(string + i) != '\0')                       // вот тут прикольнее
  36.         {                                                   // булевая переменная отвечает за прохождение через точку
  37.             if (check == true)                              // если это произошло, то можно начинать считать  
  38.             {
  39.                 counter++;
  40.                 dnum += ((int)*(string + i) - 48) * pow(mul, -(counter));
  41.             }
  42.             if (*(string + i) == '.')                      
  43.                 check = true;
  44.             i++;
  45.         }
  46.         return dnum;
  47.     }
  48.     else if (counter == length)
  49.     {
  50.         counter = 0;
  51.         i = 0;
  52.         while (*(string + i) != '\0')
  53.         {
  54.             counter++;
  55.             i++;
  56.         }
  57.         i = 0;
  58.         counter--;
  59.         double mul = 10;
  60.         while (*(string + i) != '\0')
  61.         {
  62.             inum += ((int)*(string + i) - 48) * pow(mul, counter);
  63.             counter--;
  64.             i++;
  65.         }
  66.         return inum;
  67.     }
  68. }
RAW Paste Data
Top