diff --git a/nqvinh/array/find_all_pair_equal_to_given_number/Readme.md b/nqvinh/array/find_all_pair_equal_to_given_number/Readme.md new file mode 100644 index 0000000..469ebf7 --- /dev/null +++ b/nqvinh/array/find_all_pair_equal_to_given_number/Readme.md @@ -0,0 +1,17 @@ +# How do you find all pairs of an integer array whose sum is equal to a given number? + +### Solution: Pass through array to get all pairs equal to given number. + +#### Implementation code: +``` +for (int i = 0; i < arraySize; ++i) +{ + for(int j = i + 1; j < arraySize; j++) + { + if ((array[i] + array[j]) == givenNum) + { + printf(" %d + %d = %d\n", array[i], array[j], givenNum); + } + } +} +``` diff --git a/nqvinh/array/find_all_pair_equal_to_given_number/main.c b/nqvinh/array/find_all_pair_equal_to_given_number/main.c new file mode 100644 index 0000000..a2c1685 --- /dev/null +++ b/nqvinh/array/find_all_pair_equal_to_given_number/main.c @@ -0,0 +1,74 @@ +#include +#include +#include +#include +/* + 6. How do you find all pairs of an integer array whose sum is equal to a given number? +*/ + +#define ARRAYSIZE 15 + +void printArray(unsigned int array[], unsigned int arraySize) +{ + for (int i = 0; i < arraySize; i++) + printf("%d\t", array[i]); + + printf("\n"); + + return; +} + +void initArray(unsigned int array[], unsigned int arraySize) +{ + int i = 0; + + for (i = 0; i < arraySize; i++) + { + // random number in range 1 -> 40 + array[i] = rand() % (40 - 1 + 1) + 1; + } + + return; +} + +void findAllPair(unsigned int array[], unsigned int arraySize, unsigned int givenNum) +{ + bool flag = false; + for (int i = 0; i < arraySize; ++i) + { + for(int j = i + 1; j < arraySize; j++) + { + if ((array[i] + array[j]) == givenNum) + { + printf(" %d + %d = %d\n", array[i], array[j], givenNum); + #ifndef FIND_FLAG + #define FIND_FLAG + flag = true; + #endif + } + } + } + + if (!flag) + { + printf("can not find any pair equal to %d", givenNum); + } + return; +} + + +int main(int argc, char const *argv[]) +{ + unsigned int array[ARRAYSIZE]; + unsigned int givenNumber = 0; + // Use current time as seed for random generator + srand(time(0)); + + givenNumber = rand() % (40 - 1 + 1) + 1; + printf("Number: %d \n", givenNumber); + initArray(array, ARRAYSIZE); + printArray(array, ARRAYSIZE); + findAllPair(array, ARRAYSIZE, givenNumber); + + return 0; +} diff --git a/nqvinh/array/reverse_an_array/Readme.md b/nqvinh/array/reverse_an_array/Readme.md new file mode 100644 index 0000000..024830b --- /dev/null +++ b/nqvinh/array/reverse_an_array/Readme.md @@ -0,0 +1,11 @@ +# How do you reverse an array? + +### Solution: swap the first element with the last element, swap the second element with the element next to the last element, go on until meet the midle element. + +#### Implementation code: +``` +for (int i = 0; i < (arraySize / 2); i++) +{ + swap(&array[i], &array[arraySize -1 - i]); +} +``` diff --git a/nqvinh/array/reverse_an_array/main.c b/nqvinh/array/reverse_an_array/main.c new file mode 100644 index 0000000..ad1f24f --- /dev/null +++ b/nqvinh/array/reverse_an_array/main.c @@ -0,0 +1,68 @@ +#include +#include +#include +#include +/* + 6. How do you reverse an array? +*/ + +#define ARRAYSIZE 15 + +void swap(unsigned int *a, unsigned int *b) +{ + unsigned int tmp = 0; + + tmp = *a; + *a = *b; + *b = tmp; + + return; +} + +void printArray(unsigned int array[], unsigned int arraySize) +{ + for (int i = 0; i < arraySize; i++) + printf("%d\t", array[i]); + + printf("\n"); + + return; +} + +void initArray(unsigned int array[], unsigned int arraySize) +{ + int i = 0; + + for (i = 0; i < arraySize; i++) + { + // random number in range 1 -> 40 + array[i] = rand() % (40 - 1 + 1) + 1; + } + + return; +} + +void reverseArray(unsigned int array[], unsigned int arraySize) +{ + for (int i = 0; i < (arraySize / 2); i++) + { + swap(&array[i], &array[arraySize -1 - i]); + } +} + + +int main(int argc, char const *argv[]) +{ + unsigned int array[ARRAYSIZE]; + // Use current time as seed for random generator + srand(time(0)); + + initArray(array, ARRAYSIZE); + printArray(array, ARRAYSIZE); + + reverseArray(array, ARRAYSIZE); + printf("Array after reversing...\n"); + printArray(array, ARRAYSIZE); + + return 0; +}