-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsal2.c
More file actions
105 lines (73 loc) · 1.71 KB
/
sal2.c
File metadata and controls
105 lines (73 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 3 // number <= 10^3
#define DIV2 10
#define MAXNO 1001
#define DIV3 MAXNO - 1 * 10
void fillArray (int *makeArr, int arrLen);
/* function for getting array */
void intToArray (int *makeArr, int arrLen);
/* function for converting integer to array */
int appendNos (int *arr, int pos, int pos2);
/* function for evaluating corner case modulus == modulus a[pos] != a[pos2] */
void printArr (int *makeArr, int arrLen);
/* function for printing array */
int main (void) {
int userNum, *arr;
scanf("%d", &userNum);
arr = (int*) calloc(userNum, sizeof(int));
fillArray(arr, userNum);
printArr(arr, userNum);
intToArray(arr, userNum);
printArr(arr, userNum);
free(arr);
return 0;
}
void fillArray (int *makeArr, int arrLen) {
int i, scan;
for (i = 0; i < arrLen; i++) {
scan = rand () % 100;
makeArr[i] = scan;
}
}
void intToArray (int *makeArr, int arrLen) {
int i, j, temp, append, prepend;
append = 0;
prepend = 0;
for (i = 0; i < arrLen; i++) {
for (j = arrLen - 1; j > i; j--) {
append = appendNos(makeArr, i, j);
prepend = appendNos(makeArr, j, i);
if (prepend > append) {
temp = makeArr[i];
makeArr[i] = makeArr[j];
makeArr[j] = temp;
}
}
}
}
void printArr (int *makeArr, int arrLen) {
int i;
for (i = 0; i < arrLen; i++) {
printf(" %d ", makeArr[i]);
}
printf("\n");
}
int appendNos (int *arr, int pos, int pos2) {
int pow;
pow = 10;
/*
pos1 = 65
pos2 = 389
while pos2 > 10, 10^number of exponents.
pos * 10^number of exponents + pos2
65 * 10^3 + 389 = 65389
389 * 10^2 + 65 = 38965
*/
while (arr[pos2] >= pow) {
pow*=10;
}
return pow * arr[pos] + arr[pos2];
}