View difference between Paste ID: mHg08RkY and Gy301J7u
SHOW: | | - or go back to the newest paste.
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;
37+
	if(n < 10) return 1;
38
	else return get_num_digits(n/10)+1;
39
}
40-
int get_first_digit(int n)
40+
41
int* get_digits(int n)
42-
	int num_digits = get_num_digits(n);
42+
43-
	int sub = pow(10, num_digits-1);
43+
	int i = get_num_digits(n);
44-
	int digit = 0;
44+
	int* digits = malloc(sizeof(int) * i);
45
	int* cur_dig = digits;
46-
	while(get_num_digits(n) == num_digits){
46+
47-
		n -= sub;
47+
	while(i>0){
48-
		digit++;
48+
		digits[i---1] = n%10;
49
		n = floor(n/10);
50
	}
51-
	return digit;
51+
52
	return digits;
53
}
54