Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions nqvinh/array/find_all_pair_equal_to_given_number/Readme.md
Original file line number Diff line number Diff line change
@@ -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);
}
}
}
```
74 changes: 74 additions & 0 deletions nqvinh/array/find_all_pair_equal_to_given_number/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
/*
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

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is pre-processing statement, use with care

#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;
}
11 changes: 11 additions & 0 deletions nqvinh/array/reverse_an_array/Readme.md
Original file line number Diff line number Diff line change
@@ -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]);
}
```
68 changes: 68 additions & 0 deletions nqvinh/array/reverse_an_array/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
/*
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;
}