C-Playground/lib/array.c

75 lines
1.4 KiB
C
Executable File

#include <stdio.h>
#include "array.h"
#include "base10.h"
int sizeofStr(char in[]) {
int i = 0;
for (i = 0; in[i] != '\0'; ++i)
;
return i;
}
void printStrArray(char in[]) {
int i;
printf("{ ");
for (i = 0; i < sizeofStr(in); ++i) {
printf("%c", in[i]);
if (i == sizeofStr(in) - 1) {
printf(" }\n");
} else {
printf(", ");
}
}
}
void printIntArray(intArray *in) {
int i;
printf("{ ");
for (i = 0; i < in->length; ++i) {
printf("%d", in->data[i]);
if (i == in->length - 1) {
printf(" }\n");
} else {
printf(", ");
}
}
}
int checkIntArraySorted(intArray *in) {
int i = 0;
while(i < in->length - 1) {
if (in->data[i] > in->data[i + 1])
return 0;
++i;
}
return 1;
}
/* Convert an integer array into a combined integer */
int intArrayToInt(intArray *in) {
int i;
int out = 0;
int currentDigit;
for (i = 0, currentDigit = in->length; i <= in->length; ++i, --currentDigit)
out += in->data[i] * intDigitExpand(currentDigit);
return out;
}
/* Split an integer into an integer array */
intArray intToIntArray(int in) {
int inLength = intDigitCount(in);
int outData[inLength];
intArray out;
out.data = outData;
out.length = inLength;
int i;
int j;
for(i = inLength, j = 0; i >= 1; --i, ++j) {
out.data[j] = in / intDigitExpand(i);
in -= intDigitExpand(i) * out.data[j];
}
return out;
}