Advertisement
KaeruCT

first c snippet, it's probably horrible

Dec 5th, 2011
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int* get_digits(int n);
  6. int get_first_digit(int n);
  7. int get_num_digits(int n);
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.     if(argc < 2){
  12.         printf("Please input a number\n");
  13.         return 1;
  14.     }
  15.    
  16.     int num = atoi(argv[1]);
  17.    
  18.     if(num < 0){
  19.         printf("Please input a positive number\n");
  20.         return 1;
  21.     }
  22.    
  23.     int* digits = get_digits(num);
  24.     int num_digits= get_num_digits(num);
  25.     int i;
  26.    
  27.     for(i = 0; i < num_digits; i++){
  28.         printf("%d\n", digits[i]);
  29.     }
  30.  
  31.     free(digits);
  32.     return 0;
  33. }
  34.  
  35. int get_num_digits(int n)
  36. {
  37.     return (int) floor(log10(abs(n)))+1;
  38. }
  39.  
  40. int get_first_digit(int n)
  41. {
  42.     int num_digits = get_num_digits(n);
  43.     int sub = pow(10, num_digits-1);
  44.     int digit = 0;
  45.    
  46.     while(get_num_digits(n) == num_digits){
  47.         n -= sub;
  48.         digit++;
  49.     }
  50.    
  51.     return digit;
  52. }
  53.  
  54. int* get_digits(int n)
  55. {
  56.     int num_digits = get_num_digits(n);
  57.     int* digits = malloc(sizeof(int) * num_digits);
  58.     int length = num_digits;
  59.     int i;
  60.    
  61.     for(i = num_digits; i > 0; i--){
  62.         if(length != i){
  63.             digits[num_digits-i] = 0;
  64.         }else{
  65.             digits[num_digits-i] = get_first_digit(n);
  66.             n -= digits[num_digits-i]*pow(10, i-1);
  67.             length = get_num_digits(n);
  68.         }
  69.     }
  70.    
  71.     return digits;
  72. }
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement