Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. // 9-13 ftoa itoa.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <stdio.h>
  6. #include <ctype.h>
  7. #include <math.h>
  8.  
  9. int get_size(int a) {
  10. a = fabs(a);
  11. int size = 0;
  12. while (a > 0) {
  13. size++;
  14. a /= 10;
  15. }
  16. return size;
  17. }
  18.  
  19. int get_any_digit(int a, int index) {
  20. a = fabs(a);
  21. int loop = get_size(a) - index - 1;
  22. for (int i = 0; i < loop; i++)
  23. a /= 10;
  24. return a % 10;
  25. }
  26.  
  27. int my_itoa(int a, char tab[], int size);
  28. int my_ftoa(float a, int precision, char tab[], int size);
  29.  
  30. int my_itoa(int a, char tab[], int size) {
  31. int a_size = get_size(a);
  32. if (size < a_size + 1)
  33. return 1;
  34. int i = 0;
  35. if (a < 0) {
  36. tab[i] = '-';
  37. i = 1;
  38. }
  39. int j = 0;
  40. for ( ; i < a_size; i++) {
  41. tab[i] = get_any_digit(a, j) + '0';
  42. j++;
  43. if (j > size)
  44. return 1;
  45. }
  46. tab[j] = '\0';
  47. return 0;
  48. }
  49.  
  50. int my_ftoa(float a, int precision, char tab[], int size) {
  51. int a_size = get_size(a);
  52. if (size < a_size + precision + 2 || precision < 0)
  53. return 1;
  54. int i = 0;
  55. if (a < 0) {
  56. tab[i] = '-';
  57. i = 1;
  58. }
  59. int j = 0;
  60. for (; i < a_size; i++) {
  61. tab[i] = get_any_digit(a, j) + '0';
  62. j++;
  63. if (j > size)
  64. return 1;
  65. }
  66. if (precision > 0) {
  67. tab[j++] = '.';
  68. if (j > size)
  69. return 1;
  70. int a1 = (int)a;
  71. float num = a;
  72. num -= a1; //ten zabieg daje nam sama czesc dziesietna floata
  73. num *= 10;
  74. for (int k = 0; k < precision; k++) {
  75. int num1 = (int)num;
  76. tab[j++] = float(num1) + '0';
  77. if (j > size)
  78. return 1;
  79. num -= num1;
  80. num *= 10;
  81. }
  82. }
  83. tab[j] = '\0';
  84. return 0;
  85. }
  86.  
  87.  
  88. int main()
  89. {
  90. char tab[1000];
  91. printf("%d\n%d\n", get_size(1320), get_any_digit(1320, 2));
  92. my_itoa(1320.12, tab, 1000);
  93. printf("%s\n", tab);
  94. my_ftoa(1320.9583291428, 4, tab, 1000);
  95. printf("%s\n", tab);
  96. return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement