pc-ip-19.c (1878B)
1 /* 2 * Question 19: 3 * Write a C program that includes a user-defined function named binarySearch with the signature int binarySearch(int arr[], int size, int target);. 4 */ 5 6 #include <stdio.h> 7 #include <stdlib.h> 8 9 int binarySearch(int[], int, int); 10 void inputArray(int[], int); 11 void printArray(int[], int); 12 13 int main() 14 { 15 int n, *arr = NULL, target, foundIndex; 16 printf("Enter the number of element: "); 17 scanf("%d", &n); 18 arr = (int *)malloc(n * sizeof(int)); 19 if (arr == NULL) 20 { 21 printf("\nMemory allocation failed."); 22 return 1; 23 } 24 printf("\nPlease enter the sorted array element(s): \n"); 25 inputArray(arr, n); 26 printf("\nGiven array: "); 27 printArray(arr, n); 28 printf("\nPlease enter the target element: "); 29 scanf("%d", &target); 30 foundIndex = binarySearch(arr, n, target); 31 if (foundIndex != -1) 32 { 33 printf("\nTarget '%d' found at Index %d.", target, foundIndex); 34 } 35 else 36 { 37 printf("\nUnable to find target '%d'.", target); 38 } 39 free(arr); 40 return 0; 41 } 42 43 void inputArray(int arr[], int n) 44 { 45 int i; 46 for (i = 0; i < n; i++) 47 { 48 printf("Enter element %d: ", i + 1); 49 scanf("%d", &arr[i]); 50 } 51 } 52 53 void printArray(int arr[], int n) 54 { 55 int i; 56 printf("["); 57 for (i = 0; i < n; i++) 58 { 59 printf("%d", arr[i]); 60 if (i < n - 1) 61 { 62 printf(", "); 63 } 64 } 65 printf("]"); 66 } 67 68 int binarySearch(int arr[], int size, int target) 69 { 70 int low = 0; 71 int high = size - 1; 72 int mid; 73 while (low <= high) 74 { 75 mid = (low + high) / 2; 76 if (arr[mid] == target) 77 { 78 return mid; 79 } 80 else if (arr[mid] > target) 81 { 82 high = mid - 1; 83 } 84 else if (arr[mid] < target) 85 { 86 low = mid + 1; 87 } 88 } 89 return -1; 90 }