code_junkie

convert an integer number into an array

Nov 14th, 2011
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. int number = 5400
  2.  
  3. int numberArray[4]
  4.  
  5. numberArray[0] = 0;
  6. numberArray[1] = 0;
  7. numberArray[2] = 4;
  8. numberArray[3] = 5;
  9.  
  10. #include <math.h>
  11.  
  12. char * convertNumberIntoArray(unsigned int number) {
  13. int length = (int)floor(log10((float)number)) + 1;
  14. char * arr = new char[length];
  15. int i = 0;
  16. do {
  17. arr[i] = number % 10;
  18. number /= 10;
  19. i++;
  20. } while (number != 0);
  21. return arr;
  22. }
  23.  
  24. #include <math.h>
  25.  
  26. char * convertNumberIntoArray(unsigned int number) {
  27. unsigned int length = (int)(log10((float)number)) + 1;
  28. char * arr = (char *) malloc(length * sizeof(char)), * curr = arr;
  29. do {
  30. *curr++ = number % 10;
  31. number /= 10;
  32. } while (number != 0);
  33. return arr;
  34. }
  35.  
  36. /* count number of digits */
  37. int c = 0; /* digit position */
  38. int n = number;
  39.  
  40. while (n != 0)
  41. {
  42. n /= 10;
  43. c++;
  44. }
  45.  
  46. int numberArray[c];
  47.  
  48. c = 0;
  49. n = number;
  50.  
  51. /* extract each digit */
  52. while (n != 0)
  53. {
  54. numberArray[c] = n % 10;
  55. n /= 10;
  56. c++;
  57. }
  58.  
  59. int * toArray(int number)
  60. {
  61. int n = log10(number) + 1;
  62. int i;
  63. int *numberArray = calloc(n, sizeof(int));
  64. for ( i = 0; i < n; ++i, number /= 10 )
  65. {
  66. numberArray[i] = number % 10;
  67. }
  68. return numberArray;
  69. }
  70.  
  71. // returns the number of digits converted
  72. // stores the digits in reverse order (smalles digit first)
  73. // precondition: outputdigits is big enough to store all digits.
  74. //
  75. int convert( int number, int* outputdigits, int* signdigit ) {
  76.  
  77. int* workingdigits = outputdigits;
  78.  
  79. int sign = 1;
  80. if( number < 0 ) { *signdigit = -1; number *= -1; }
  81. ++workingdigits;
  82.  
  83. for ( ; number > 0; ++ workingdigits ) {
  84. *workingdigits = number % 10;
  85. number = number / 10;
  86. }
  87.  
  88. return workingdigits - outputdigits;
  89. }
  90.  
  91. void printdigits( int* digits, int size, int signdigit ) {
  92. if( signdigit < 0 ) printf( "-" );
  93.  
  94. for( int* digit = digits+size-1; digit >= digits; --digit ){
  95. printf( "%d", *digit );
  96. }
  97. }
  98.  
  99. int main() {
  100. int digits[10];
  101. int signdigit;
  102. printdigits( digits, convert( 10, digits, &signdigit ), signdigit );
  103. printdigits( digits, convert( -10, digits, &signdigit ), signdigit );
  104. printdigits( digits, convert( 1005, digits, &signdigit ), signdigit );
  105.  
  106. }
  107.  
  108. for (i = 0; i < 4; i++) {
  109. numberArray[i] = number%10;
  110. number = number div 10;
  111. }
  112.  
  113. /* one decimal digit takes a few more than 3 bits. (2^3=8, 2^4=16) */
  114. int digits[(sizeof (int) * CHAR_BIT) / 3 + 1],
  115. *digitsp = digits;
  116. do {
  117. *digitsp++ = number % 10;
  118. number /= 10;
  119. } while(number > 0);
  120.  
  121. digitsp - digits
  122.  
  123. #define MIN_DIGITS_IN_INT ((sizeof (int) * CHAR_BIT) / 3 + 1)
  124.  
  125. int to_array(int number, int *digits) {
  126. int *digitsp = digits;
  127. do {
  128. *digitsp++ = number % 10;
  129. number /= 10;
  130. } while(number > 0);
  131. return digitsp - digits;
  132. }
  133.  
  134. int main() {
  135. int number = rand();
  136. int digits[MIN_DIGITS_IN_INT];
  137. int n = to_array(number, digits);
  138.  
  139. /* test whether we're right */
  140. while(n-- > 0)
  141. printf("%d", digits[n]);
  142. }
  143. printf(" = %dn", number);
  144. }
  145.  
  146. #include <stdio.h>
  147. #include <stdlib.h>
  148. #include <math.h>
  149.  
  150. char * convertNumberIntoArray(unsigned int number) {
  151. unsigned int length = (int)(log10((float)number)) + 1;
  152. char * arr = (char *) malloc(length * sizeof(char)), * curr = arr;
  153. do {
  154. *curr++ = number % 10;
  155. number /= 10;
  156. } while (number != 0);
  157. return arr;
  158. }
  159.  
  160.  
  161.  
  162. int main(void)
  163. {
  164. int InputNumber;
  165. int arr[5];
  166.  
  167. printf("enter number: n");
  168. scanf("%d", &InputNumber);
  169.  
  170. convertNumberIntoArray(InputNumber);
  171.  
  172. printf("The number components are: %d %d %dn", arr[0],arr[1],arr[2]);
  173.  
  174. system("PAUSE");
  175. return 0;
  176. }
  177.  
  178. /***** output *****/
  179. enter number:
  180. 501
  181. The number components are: 2009291924 2009145456 -1
  182. Press any key to continue . . .
Add Comment
Please, Sign In to add comment