This C program demonstrates basic functionalities for handling integer arrays. It allows users to input integers into an array, prints the array, and performs linear searches based on user input until the user enters 0
to terminate.
This program uses a predefined array size and provides flexibility for user input. This is a fully functional program however you can further improve it with input validation, dynamic memory allocation, and improved error handling.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include <stdio.h> #define NMAX 10 int getIntArray(int a[], int nmax, int sentinel); void printIntArray(int a[], int n); int linear(int a[], int n, int who); int main(void) { int x[NMAX]; int hmny; int who; int where; hmny = getIntArray(x, NMAX, 0); printf("The array was: \n"); printIntArray(x, hmny); printf("Now we do linear searches on this data\n"); do { printf("Enter integer to search for [0 to terminate] : "); scanf("%d", &who); if (who == 0)break; where = linear(x, hmny, who); if (where < 0) { printf("Sorry, %d is not in the array\n", who); } else printf("%d is at position %d\n", who, where); } while (1); } // n is the number of elements in the array a. // These values are printed out, five per line. void printIntArray(int a[], int n) { int i; for (i = 0; i < n; ) { printf("\t%d ", a[i++]); if (i % 5 == 0) printf("\n"); } printf("\n"); } // It reads up to nmax integers and stores then in a; sentinel // terminates input. int getIntArray(int a[], int nmax, int sentinel) { int n = 0; int temp; do { printf("Enter integer [%d to terminate] : ", sentinel); scanf("%d", &temp); if (temp == sentinel) break; if (n == nmax) printf("array is full\n"); else a[n++] = temp; } while (1); return n; } // Given the array a with n elements, searches for who. // It returns its position if found, otherwise it returns -1. int linear(int a[], int n, int who) { int lcv; for (lcv = 0;lcv < n;lcv++) if (who == a[lcv])return lcv; return (-1); } |
Pseudo Code for Linear Search
1 2 3 4 5 6 7 | procedure LINEAR_SEARCH (array, value) for each item in the array if match element == value return index end if end for end procedure |