Advertisement
Guest User

Untitled

a guest
Jan 12th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement