SHOW:
|
|
- or go back to the newest paste.
1 | void bitprint(int n) | |
2 | { | |
3 | for(int i = sizeof(n)*8-1; i >= 0; i --)//C99 standard for loop and comment. | |
4 | printf("%d", (n&(1<<i))>>i); | |
5 | } | |
6 | ||
7 | - | It's exactly not a one liner, but this prints out the integer in binary form. The parameter can be changed to a long if you want. |
7 | + | //It's exactly not a one liner, but this prints out the integer in binary form. The parameter can be changed //to a long if you want. |
8 | ||
9 | int gcd(int p, int q) | |
10 | { | |
11 | for(int i = p < q?p:q; i > 0; i --) | |
12 | if(!(p%i) && !(q%i)) | |
13 | return i; | |
14 | return -1; | |
15 | } | |
16 | ||
17 | - | This is not a one liner either, but I like it. It returns the greatest common denominator. |
17 | + | //This is not a one liner either, but I like it. It returns the greatest common denominator. |
18 | ||
19 | /** | |
20 | * @description Finds the character in the string | |
21 | * @param string to find in | |
22 | * @param character to find | |
23 | * @return the pointer to the character in string | |
24 | */ | |
25 | char *find_chr(char *input, char find) | |
26 | { | |
27 | while(*input != find&&*input++) | |
28 | ; | |
29 | return input; | |
30 | } | |
31 | ||
32 | /** | |
33 | * @description This splits the string at the inputted character | |
34 | * @param original string | |
35 | * @param pointer to lower half of the string | |
36 | * @param pointer to other half of the string | |
37 | * @param character to find and split at | |
38 | * @return void | |
39 | */ | |
40 | ||
41 | void split(char *orig, char **p, char **s, char c) | |
42 | { | |
43 | char *temp = find_chr(orig, c); | |
44 | char *pop = (char*)malloc(sizeof(char) * (temp - orig)); | |
45 | *p = pop; | |
46 | while(orig != temp) | |
47 | *pop++ = *orig++; | |
48 | *s = ++temp; | |
49 | } | |
50 | ||
51 | ||
52 | ||
53 | /** | |
54 | * @description This shifts every character over indicated number of times | |
55 | * @param input string to be manipulated | |
56 | * @param number of steps to shift over | |
57 | * @return void | |
58 | */ | |
59 | void Caesar(char **input, int shift) | |
60 | { | |
61 | char *temp = (char*)malloc(sizeof(char)*strlen(*input)); | |
62 | for(int i = 0; i < strlen(*input); i ++){ | |
63 | if(isalpha(*(*input+i))) | |
64 | *(temp+i) = (*(*input+i)+shift>122?(96+(shift-(122-tolower(*(*input+i))))):tolower(*(*input+i))+shift); | |
65 | else | |
66 | *(temp+i) = ' '; | |
67 | } | |
68 | *input = temp; | |
69 | } | |
70 | ||
71 | ||
72 | /** | |
73 | * @description This reverses the Caesar algorithm | |
74 | * @param input string to be manipulated | |
75 | * @param number of steps to shift over | |
76 | * @return void | |
77 | */ | |
78 | void deCaesar(char **input, int shift) | |
79 | { | |
80 | char *temp = (char*)malloc(sizeof(char)*strlen(*input)); | |
81 | for(int i = 0; i < strlen(*input); i ++){ | |
82 | if(isalpha(*(*input+i))) | |
83 | *(temp+i) = (*(*input+i)-shift<97?(123-(shift-(tolower(*(*input+i))-97))):tolower(*(*input+i))-shift); | |
84 | else | |
85 | *(temp+i) = ' '; | |
86 | } | |
87 | *input = temp; | |
88 | } |