Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int* get_digits(int n);
- int get_first_digit(int n);
- int get_num_digits(int n);
- int main(int argc, char *argv[])
- {
- if(argc < 2){
- printf("Please input a number\n");
- return 1;
- }
- int num = atoi(argv[1]);
- if(num < 0){
- printf("Please input a positive number\n");
- return 1;
- }
- int* digits = get_digits(num);
- int num_digits= get_num_digits(num);
- int i;
- for(i = 0; i < num_digits; i++){
- printf("%d\n", digits[i]);
- }
- free(digits);
- return 0;
- }
- int get_num_digits(int n)
- {
- return (int) floor(log10(abs(n)))+1;
- }
- int get_first_digit(int n)
- {
- int num_digits = get_num_digits(n);
- int sub = pow(10, num_digits-1);
- int digit = 0;
- while(get_num_digits(n) == num_digits){
- n -= sub;
- digit++;
- }
- return digit;
- }
- int* get_digits(int n)
- {
- int num_digits = get_num_digits(n);
- int* digits = malloc(sizeof(int) * num_digits);
- int length = num_digits;
- int i;
- for(i = num_digits; i > 0; i--){
- if(length != i){
- digits[num_digits-i] = 0;
- }else{
- digits[num_digits-i] = get_first_digit(n);
- n -= digits[num_digits-i]*pow(10, i-1);
- length = get_num_digits(n);
- }
- }
- return digits;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement