From 4a86da2fd0b300f1bac00365577463c1ff3852d9 Mon Sep 17 00:00:00 2001 From: PranavHegde Date: Tue, 5 Oct 2021 10:45:22 +0530 Subject: [PATCH 1/2] Cprogram --- c program/Circular LinkedList.c | 78 ++++++++ c program/Create A Basic Stack.c | 79 ++++++++ c program/Create Queue Using LinkedList.c | 72 ++++++++ c program/Doubly LinkedList.c | 170 ++++++++++++++++++ .../LinkedList Add Consonants After Vowels.c | 85 +++++++++ c program/calender.c | 56 ++++++ c program/concatenate.c | 39 ++++ c program/fibbonaci_using_recursion.c | 22 +++ c program/max_min_array.c | 47 +++++ c program/sumoffirst10naturalnumber.c | 14 ++ c program/toggle_case.c | 44 +++++ 11 files changed, 706 insertions(+) create mode 100644 c program/Circular LinkedList.c create mode 100644 c program/Create A Basic Stack.c create mode 100644 c program/Create Queue Using LinkedList.c create mode 100644 c program/Doubly LinkedList.c create mode 100644 c program/LinkedList Add Consonants After Vowels.c create mode 100644 c program/calender.c create mode 100644 c program/concatenate.c create mode 100644 c program/fibbonaci_using_recursion.c create mode 100644 c program/max_min_array.c create mode 100644 c program/sumoffirst10naturalnumber.c create mode 100644 c program/toggle_case.c diff --git a/c program/Circular LinkedList.c b/c program/Circular LinkedList.c new file mode 100644 index 0000000..10f15fe --- /dev/null +++ b/c program/Circular LinkedList.c @@ -0,0 +1,78 @@ +#include +#include + +struct node { + int data; + struct node *link; +}; + +typedef struct node C; +C *front=NULL, *rear = NULL, *temp; + +void create() { + C *newnode; + newnode=(C*)malloc(sizeof(C)); + printf("Enter node value: "); + scanf("%d", &newnode->data); + newnode->link = NULL; + if(rear==NULL) front = rear = newnode; + else { + rear->link = newnode; + rear = newnode; + } + rear->link = front; +} + +void del() { + temp = front; + if(front == NULL) printf("\nUnderflow: "); + else { + if(front == rear) { + printf("\n%p", front->link); + front = rear = NULL; + } + else { + printf("\n%p", front->link); + front = front->link; + rear->link = front; + } + temp->link = NULL; + free(temp); + } +} + +void display() { + temp = front; + if(front == NULL) printf("\nEmpty list"); + else { + printf("\n"); + for(; temp != rear; temp=temp->link) + printf("\n%d address=%p next=%p\t",temp->data,temp,temp->link); + printf("\n%d address=%p next=%p\n",temp->data,temp,temp->link); + } +} + +int menu() { + int ch; + printf("Enter your choice: "); + scanf("%d", &ch); + char ch; + while( ( ch = getchar() ) != '\n' && ch != EOF ); + return(ch); +} + +int main() { + printf("\n1. Insert node\n2. Delete node\n3. Display list\n4. Exit\n"); + while(1) { + switch(menu()) { + case 1: create(); + break; + case 2: del(); + break; + case 3: display(); + break; + case 4: exit(0); + default: printf("\nInvalid choice"); + } + } +} \ No newline at end of file diff --git a/c program/Create A Basic Stack.c b/c program/Create A Basic Stack.c new file mode 100644 index 0000000..b48281c --- /dev/null +++ b/c program/Create A Basic Stack.c @@ -0,0 +1,79 @@ +#include +#include + +typedef struct stack { + int top; + unsigned capacity; + int *array; +} ST; + + + +ST* create() { + int cap; + printf("What is the stack capacity: "); + scanf("%d", &cap); + ST *s = (ST*)malloc(sizeof(ST)); + s->top = -1; + s->capacity = cap; + int *arr = (int*)malloc(sizeof(int) * cap); + s->array = arr; + return(s); +} +int isFull(ST *s) { + if(s->top == s->capacity-1) return 1; + else return 0; +} + +int isEmp(ST *s) { + if(s->top == -1) return 1; + else return 0; +} + +void push(ST *s) { + int x, p; + if(!isFull(s)) { + printf("Enter a value: "); + scanf("%d", &x); + s->top++; + p = s->top; + s->array[p] = x; + printf("%d added to the stack\n", x); + } + else printf("Stack full\n"); +} + +void pop(ST *s) { + if(!isEmp(s)) { + int x, p; + p = s->top; + x = s->array[p]; + s->top--; + printf("%d popped outta the stack\n", x); + } + else printf("Empty stack\n"); +} + +int menu() { + int c; + printf("Enter choice: "); + scanf("%d", &c); + char ch; + while( ( ch = getchar() ) != '\n' && ch != EOF ); + //Input buffer cleared + return(c); +} + +int main() { + ST *s; + s = create(); + printf("1. Push items\n2. Pop items\n3. Exit\n"); + while(1) { + switch(menu()) { + case 1: push(s); break; + case 2: pop(s); break; + case 3: exit(0); + default: printf("Invalid choice\n"); + } + } +} \ No newline at end of file diff --git a/c program/Create Queue Using LinkedList.c b/c program/Create Queue Using LinkedList.c new file mode 100644 index 0000000..e430efd --- /dev/null +++ b/c program/Create Queue Using LinkedList.c @@ -0,0 +1,72 @@ +#include +#include + +typedef struct node { + int data; + struct node *next; +} n; + +typedef struct queue { + n *front, *rear; +} q; + +n* newnode() { + n *temp = (n*)malloc(sizeof(n)); + printf("Enter data: "); + scanf("%d", &temp->data); + printf("%d added to queue\n", temp->data); + temp->next = NULL; + return temp; +} + +q* createQ() { + q *queue = (q*)malloc(sizeof(q)); + queue->front = queue->rear = NULL; + return queue; +} + +void enQ(q *queue) { + n *temp = newnode(); + if(queue->rear == NULL) { + queue->front = queue->rear = temp; + return; + } + queue->rear->next = temp; + queue->rear = temp; +} + +void deQ(q *queue) { + if(queue->front == NULL) { + printf("Empty queue\n"); + return; + } + + n *temp = queue->front; + queue->front = queue->front->next; + printf("%d removed from queue\n", temp->data); + free(temp); + + if(queue->front == NULL) queue->rear = NULL; +} + +int menu() { + int p; + printf("Choice: "); + scanf("%d", &p); + char ch; + while((ch = getchar() != '\n') && ch != EOF); + return p; +} + +int main() { + printf("1. Add to Queue\n2. Remove from Queue\n3. Exit\n"); + q *queue = createQ(); + while(1) { + switch(menu()) { + case 1: enQ(queue); break; + case 2: deQ(queue); break; + case 3: exit(0); + default: printf("Invalid choice\n"); + } + } +} diff --git a/c program/Doubly LinkedList.c b/c program/Doubly LinkedList.c new file mode 100644 index 0000000..32a5691 --- /dev/null +++ b/c program/Doubly LinkedList.c @@ -0,0 +1,170 @@ +#include +#include + +struct node { + int data; + struct node *prev, *next; +}; + +typedef struct node C; + +C *start = NULL; + +void node_at_start() { + C *newnode; + newnode = (C*)malloc(sizeof(C)); + printf("Enter a value: "); + scanf("%d", &newnode->data); + newnode->prev = NULL; + newnode->next = NULL; + if(start == NULL) start = newnode; //point to the new node + else { + start->prev = newnode; + newnode->next = start; + start = newnode; + } +} + +void node_at_end() { + C *p, *t; //t to traverse the list + p=(C*)malloc(sizeof(C)); + printf("Enter a value: "); + scanf("%d", &p->data); + p->next = NULL; //last node now + if(start == NULL) { + p->prev = NULL; //becomes the first node in am empty list + start = p; + } + else { + //Traverse the list now + t = start; + while(t->next != NULL) { + t = t->next; //Points to the last node + } + p->prev = t; //Becomes the last node now + t->next = p; + } +} + +void node_in_between() { + int i = 1, pos, val; + C *new, *temp; + + printf("Enter a position: "); + scanf("%d", &pos); + printf("Enter a value: "); + scanf("%d", &val); + + if(start == NULL) printf("Empty list\n"); + else { + temp = start; + while(inext; + i++; + } + if(temp != NULL) { + new = (C*)malloc(sizeof(C)); + new->data = val; + new->next = temp->next; + new->prev = temp; + if(temp->next != NULL) temp->next->prev = new; + temp->next = new; + } + else printf("Invalid position\n"); + } +} + +void traverse() { + C *t; + if(start == NULL) printf("List is empty\n"); + else { + t = start; + while(t != NULL) { + printf("%d ", t->data); + t = t->next; + } + printf("\n"); + } +} + +void del_at_start() { + C *d; + if(start == NULL) { + printf("Empty list, exiting now"); + exit(0); + } + else { + d = start; + start = start->next; + free(d); + } +} + +void del_at_end() { + C *e, *t; + if(start == NULL) { + printf("Empty list, exiting now"); + exit(0); + } + else { + t = start; + while(t->next != NULL) { + t = t->next; //t points to the last node + } + e = t; + t->prev->next = NULL; + free(e); + } +} + +void del_in_between() { + C *ptr; + int i, pos; + printf("Enter position: "); + scanf("%d", &pos); + ptr = start; + for(i=1; inext; + if(ptr != NULL) { + ptr->prev->next = ptr->next; + ptr->next->prev = ptr->prev; + free(ptr); + } + else + printf("\nInvalid choice"); +} + + +int menu() { + int ch; + printf("Enter your choice: "); + scanf("%d", &ch); + char ch; + while( ( ch = getchar() ) != '\n' && ch != EOF ); + return(ch); +} + +int main() { + printf("0. Node at position\n1. Insert node at the start\n2. Insert node at the end\n3. Traverse the list" + "\n4. Delete at the start\n5. Delete at the end\n6. Delete at position\n7. Exit\n"); + while(1) { + switch(menu()) { + case 0: node_in_between(); + break; + case 1: node_at_start(); + break; + case 2: node_at_end(); + break; + case 3: traverse(); + break; + case 4: del_at_start(); + break; + case 5: del_at_end(); + break; + case 6: del_in_between(); + break; + case 7: exit(0); + default: printf("Invalid choice\n"); + } + } +} \ No newline at end of file diff --git a/c program/LinkedList Add Consonants After Vowels.c b/c program/LinkedList Add Consonants After Vowels.c new file mode 100644 index 0000000..ebb3910 --- /dev/null +++ b/c program/LinkedList Add Consonants After Vowels.c @@ -0,0 +1,85 @@ +#include +#include +#include + +typedef struct node { + char data; + struct node *next; +} n; + +n *start = NULL; + +void create(char s[]) { + n *new, *t; + char ch; + int i; + for(i=0; idata = s[i]; + new->next = NULL; + if (start == NULL) start = new; + else { + t = start; + while (t->next != NULL) + t = t->next; + t->next = new; + } + } +} + +void edit() { + n *prev, *n1, *t, *new; + char x, ch; + int count = 0; + if(start == NULL) printf("Empty list\n"); + else { + t = start; + while(t != NULL) { + x = t->data; + if(x == 'a' || x == 'i' || x == 'e' || x == 'o' + || x == 'u' || x == 'A' || x == 'E' || x == 'I' + || x == 'O' || x == 'U') { + ++count; + prev = t; + n1 = t->next; + new = (n*)malloc(sizeof(n)); + printf("Enter a consonant: "); + scanf("%c", &new->data); + while((ch = getchar() != '\n') && ch != EOF); + new->next = n1; + prev->next = new; + } + t = t->next; + } + if(count == 0) { + printf("No vowels found\n"); + exit(0); + } + } +} + +void trav() { + n *tr; + if(start == NULL) printf("Empty list\n"); + else { + tr = start; + printf("Current list\n"); + while(tr != NULL) { + printf("%c ", tr->data); + tr = tr->next; + } + printf("\n"); + } +} + +int main() { + char st[100], ch; + printf("Enter a string first: "); + scanf("%[^\n]s", &st); + while((ch = getchar() != '\n' && ch != EOF)); + create(st); + trav(); + edit(); + trav(); + exit(0); +} \ No newline at end of file diff --git a/c program/calender.c b/c program/calender.c new file mode 100644 index 0000000..9341c96 --- /dev/null +++ b/c program/calender.c @@ -0,0 +1,56 @@ + +#include + +int main() +{ + int month; + + /* Input month number from user */ + printf("Enter month number(1-12): "); + scanf("%d", &month); + + switch(month) + { + case 1: + printf("31 days"); + break; + case 2: + printf("28/29 days"); + break; + case 3: + printf("31 days"); + break; + case 4: + printf("30 days"); + break; + case 5: + printf("31 days"); + break; + case 6: + printf("30 days"); + break; + case 7: + printf("31 days"); + break; + case 8: + printf("31 days"); + break; + case 9: + printf("30 days"); + break; + case 10: + printf("31 days"); + break; + case 11: + printf("30 days"); + break; + case 12: + printf("31 days"); + break; + default: + printf("Invalid input! Please enter month number between 1-12"); + + } + + return 0; +} diff --git a/c program/concatenate.c b/c program/concatenate.c new file mode 100644 index 0000000..b8263bc --- /dev/null +++ b/c program/concatenate.c @@ -0,0 +1,39 @@ +#include +#define MAX_SIZE 100 // Maximum string size + +int main() +{ + char str1[MAX_SIZE], str2[MAX_SIZE]; + int i, j; + + + /* Input two strings from user */ + printf("Enter first string: "); + gets(str1); + printf("Enter second string: "); + gets(str2); + + + /* Move till the end of str1 */ + i=0; + while(str1[i] != '\0') + { + i++; + } + + /* Copy str2 to str1 */ + j = 0; + while(str2[j] != '\0') + { + str1[i] = str2[j]; + i++; + j++; + } + + // Make sure that str1 is NULL terminated + str1[i] = '\0'; + + printf("Concatenated string = %s\n", str1); + + return 0; +} diff --git a/c program/fibbonaci_using_recursion.c b/c program/fibbonaci_using_recursion.c new file mode 100644 index 0000000..4a66d09 --- /dev/null +++ b/c program/fibbonaci_using_recursion.c @@ -0,0 +1,22 @@ +#include +int f(int); +int main() +{ +int n, m= 0, i; +printf("Enter Total terms:n"); +scanf("%d", &n); +printf("Fibonacci series terms are:n"); +for(i = 1; i <= n; i++) +{ +printf("%d\n", fibonacci(m)); +m++; +} +return 0; +} +int fibonacci(int n) +{ +if(n == 0 || n == 1) +return n; +else +return(fibonacci(n-1) + fibonacci(n-2)); +} \ No newline at end of file diff --git a/c program/max_min_array.c b/c program/max_min_array.c new file mode 100644 index 0000000..3096678 --- /dev/null +++ b/c program/max_min_array.c @@ -0,0 +1,47 @@ +#include + +#define MAX_SIZE 100 // Maximum array size + +int main() +{ + int arr[MAX_SIZE]; + int i, max, min, size; + + /* Input size of the array */ + printf("Enter size of the array: "); + scanf("%d", &size); + + /* Input array elements */ + printf("Enter elements in the array: "); + for(i=0; i max) + { + max = arr[i]; + } + + /* If current element is smaller than min */ + if(arr[i] < min) + { + min = arr[i]; + } + } + + /* Print maximum and minimum element */ + printf("Maximum element = %d\n", max); + printf("Minimum element = %d\n", min); + + return 0; +} diff --git a/c program/sumoffirst10naturalnumber.c b/c program/sumoffirst10naturalnumber.c new file mode 100644 index 0000000..777f149 --- /dev/null +++ b/c program/sumoffirst10naturalnumber.c @@ -0,0 +1,14 @@ +#include +void main() +{ + int j, sum = 0; + + printf("The first 10 natural number is :\n"); + + for (j = 1; j <= 10; j++) + { + sum = sum + j; + printf("%d ",j); + } + printf("\nThe Sum is : %d\n", sum); +} diff --git a/c program/toggle_case.c b/c program/toggle_case.c new file mode 100644 index 0000000..63b2d5f --- /dev/null +++ b/c program/toggle_case.c @@ -0,0 +1,44 @@ +#include +#define MAX_SIZE 100 // Maximum string size + +/* Toggle case function declaration */ +void toggleCase(char * str); + + +int main() +{ + char str[MAX_SIZE]; + + /* Input string from user */ + printf("Enter any string: "); + gets(str); + + printf("String before toggling case: %s\n", str); + + toggleCase(str); + + printf("String after toggling case: %s\n", str); + + return 0; +} + + +/* Toggle case of each character in given string */ +void toggleCase(char * str) +{ + int i = 0; + + while(str[i] != '\0') + { + if(str[i]>='a' && str[i]<='z') + { + str[i] = str[i] - 32; + } + else if(str[i]>='A' && str[i]<='Z') + { + str[i] = str[i] + 32; + } + + i++; + } +} From d0019af05aa2b77a0667ce530dfb3388c7492d9c Mon Sep 17 00:00:00 2001 From: PranavHegde Date: Sat, 9 Oct 2021 17:44:19 +0530 Subject: [PATCH 2/2] Daa_Algorithm --- DAA_Algo/DnC(MinNMax).c | 49 +++++++++++++++++++++ DAA_Algo/DnC(MinNMax).cpp | 48 +++++++++++++++++++++ DAA_Algo/Knapsack.cpp | 53 +++++++++++++++++++++++ DAA_Algo/MergeSort.c | 91 +++++++++++++++++++++++++++++++++++++++ DAA_Algo/QuickSort.cpp | 60 ++++++++++++++++++++++++++ 5 files changed, 301 insertions(+) create mode 100644 DAA_Algo/DnC(MinNMax).c create mode 100644 DAA_Algo/DnC(MinNMax).cpp create mode 100644 DAA_Algo/Knapsack.cpp create mode 100644 DAA_Algo/MergeSort.c create mode 100644 DAA_Algo/QuickSort.cpp diff --git a/DAA_Algo/DnC(MinNMax).c b/DAA_Algo/DnC(MinNMax).c new file mode 100644 index 0000000..b00052a --- /dev/null +++ b/DAA_Algo/DnC(MinNMax).c @@ -0,0 +1,49 @@ +#include +using namespace std; +void findMinAndMax(int arr[], int low, int high, int& min, int& max); +{ + if (low == high) + { + if (max < arr[low]) + max = arr[low]; + if (min > arr[high]) + min = arr[high]; + return; + } + if (high - low == 1) + { + if (arr[low] < arr[high]) + { + if (min > arr[low]) + min = arr[low]; + if (max < arr[high]) + max = arr[high]; + } + else + { + + if (min > arr[high]) + min = arr[high]; + if (max < arr[low]) + max = arr[low]; + + } + + return; + + } + int mid = (low + high) / 2; + findMinAndMax(arr, low, mid, min, max); + findMinAndMax(arr, mid + 1, high, min, max); +} +int main() +{ + int arr[] = { 5, 2, 89, 1, 12, 4, 6, 1, 4 }; + int n = sizeof(arr) / sizeof(arr[0]); + int max = INT_MIN, min = INT_MAX; + findMinAndMax(arr, 0, n - 1, min, max); + cout << "The minimum element in the array is " << min << '\n'; + cout << "The maximum element in the array is " << max; + return 0; +} + diff --git a/DAA_Algo/DnC(MinNMax).cpp b/DAA_Algo/DnC(MinNMax).cpp new file mode 100644 index 0000000..c83fc2e --- /dev/null +++ b/DAA_Algo/DnC(MinNMax).cpp @@ -0,0 +1,48 @@ +#include + +using namespace std; + +void findMinAndMax(int arr[], int low, int high, int& min, int& max) +{ + if (low == high) + { + if (max < arr[low]) + max = arr[low]; + if (min > arr[high]) + min = arr[high]; + return; + } + if (high - low == 1) + { + if (arr[low] < arr[high]) + { + if (min > arr[low]) + min = arr[low]; + if (max < arr[high]) + max = arr[high]; + } + else + { + if (min > arr[high]) + min = arr[high]; + if (max < arr[low]) + max = arr[low]; + } + return; + } + int mid = (low + high) / 2; + findMinAndMax(arr, low, mid, min, max); + findMinAndMax(arr, mid + 1, high, min, max); +} + +int main() +{ + int arr[] = { 55, 25, 78, 91, 12, 43, 67, 11, 4 }; + int n = sizeof(arr) / sizeof(arr[0]); + int max = INT_MIN, min = INT_MAX; + findMinAndMax(arr, 0, n - 1, min, max); + cout << "The minimum element in the array is " << min << '\n'; + cout << "The maximum element in the array is " << max; + return 0; +} + diff --git a/DAA_Algo/Knapsack.cpp b/DAA_Algo/Knapsack.cpp new file mode 100644 index 0000000..40670ff --- /dev/null +++ b/DAA_Algo/Knapsack.cpp @@ -0,0 +1,53 @@ +#include + +int n = 3; +int c[10] = {10,20,30}; +int v[10] = {60,100,120}; +int W = 50; + +void greedy() { + + int cur_w; + float tot_v; + int i, maxi; + + int used[10]; + + for (i = 0; i < n; ++i) + { + used[i] = 0; + } + cur_w = W; + + while (cur_w > 0) { + + maxi = -1; + + for (i = 0; i < n; ++i) + if ((used[i] == 0) && ((maxi == -1) || ((float)v[i]/c[i] > (float)v[maxi]/c[maxi]))) + { + maxi = i; + } + + used[maxi] = 1; + cur_w -= c[maxi]; + tot_v += v[maxi]; + + if (cur_w >=0) + { + printf("Added object %d (%d$, %dKg) completly in the bag. Space left: %d.\n", maxi + 1, v[maxi], c[maxi], cur_w); + } + else + { + printf("Added %d%% (%d$, %dKg) of object %d in the bag.\n", (int)((1 + (float)cur_w/c[maxi]) * 100), v[maxi], c[maxi], maxi + 1); + tot_v -= v[maxi]; + tot_v += (1 + (float)cur_w/c[maxi]) * v[maxi]; + } + } + printf("Filled the bag with objects worth %.2f$.\n", tot_v); +} + +int main(int argc, char *argv[]) { + greedy(); + return 0; +} diff --git a/DAA_Algo/MergeSort.c b/DAA_Algo/MergeSort.c new file mode 100644 index 0000000..5e46b5d --- /dev/null +++ b/DAA_Algo/MergeSort.c @@ -0,0 +1,91 @@ +#include +#include + +void merge(int arr[], int l, int m, int r) +{ + int i, j, k; + int n1 = m - l + 1; + int n2 = r - m; + + int L[n1], R[n2]; + + for (i = 0; i < n1; i++) + L[i] = arr[l + i]; + for (j = 0; j < n2; j++) + R[j] = arr[m + 1 + j]; + + i = 0; + j = 0; + k = l; + + while (i < n1 && j < n2) + { + if (L[i] <= R[j]) + { + arr[k] = L[i]; + i++; + } + else + { + arr[k] = R[j]; + j++; + } + k++; + } + + while (i < n1) + { + arr[k] = L[i]; + i++; + k++; + } + + while (j < n2) + { + arr[k] = R[j]; + j++; + k++; + } +} + +void mergeSort(int arr[], int l, int r) +{ + if (l < r) + { + int m = l + (r - l) / 2; + + mergeSort(arr, l, m); + mergeSort(arr, m + 1, r); + + merge(arr, l, m, r); + } +} + +void printArray(int A[], int size) +{ + int i; + for (i = 0; i < size; i++) + printf("%d ", A[i]); + printf("\n"); +} + +int main() +{ + + int arr[100],arr_size; + printf("Enter size of array: "); + scanf("%d",&arr_size); + + int i; + printf("\nEnter array: "); + for (i=0; i + +using namespace std; + +void swap(int* a, int* b) +{ + int temp = *a; + *a = *b; + *b = temp; +} + +int divide (int array[], int first_index, int last_index) +{ + int pivot = array[last_index]; + int i = (first_index - 1); + for (int j = first_index; j <= last_index- 1; j++) + { + if (array[j] <= pivot) + { + i++; + swap(&array[i], &array[j]); + } + } + swap(&array[i + 1], &array[last_index]); + return (i + 1); +} + +void quickSort(int array[], int first_index, int last_index) +{ + if (first_index < last_index) + { + int divide_index = divide(array, first_index, last_index); + quickSort(array, first_index, divide_index - 1); + quickSort(array, divide_index + 1, last_index); + } +} + +void display(int array[], int number) +{ + int i; + cout<<"Sorted Array: "; + for (i = 0; i < number; i++) + cout << array[i] << " "; + cout << endl; +} + +int main() +{ + int arr[30], i, n; + cout<<"Enter the number of elements:"; + cin>>n; + cout<<"Enter the elements: "; + for(i=0;i>arr[i]; + } + quickSort(arr, 0, n-1); + display(arr, n); + return 0; +}