Advertisement
TheRandomTroll

p05_menu.c

Apr 5th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void show_menu();
  5. int *read_array(int *);
  6. void print_array(int *, int);
  7. int biggest_odd(int *, int);
  8. int smallest_even(int *, int);
  9.  
  10. int main()
  11. {
  12.     int size;
  13.     int *arr;
  14.     while (1)
  15.     {
  16.         show_menu();
  17.         int choice;
  18.         scanf("%d", &choice);
  19.         if (choice == 1)
  20.         {
  21.             arr = read_array(&size);
  22.         }
  23.         else if (choice == 2)
  24.         {
  25.             print_array(arr, size);
  26.         }
  27.         else if (choice == 3)
  28.         {
  29.             printf("The biggest odd number is: %d\n", biggest_odd(arr, size));
  30.         }
  31.         else if (choice == 4)
  32.         {
  33.             printf("The smallest even number is: %d\n", smallest_even(arr, size));
  34.         }
  35.         else if (choice == 5)
  36.         {
  37.             return 0;
  38.         }
  39.         else
  40.         {
  41.             printf("Invalid input!\n\n");
  42.         }
  43.     }
  44.     return 0;
  45. }
  46.  
  47. void show_menu()
  48. {
  49.     printf("1. Read an array\n");
  50.     printf("2. Print array\n");
  51.     printf("3. Get largest odd number\n");
  52.     printf("4. Get smallest even number\n");
  53.     printf("5. Exit\n");
  54.     printf("Choose your option: ");
  55. }
  56.  
  57. int *read_array(int *size)
  58. {
  59.     *size = 1;
  60.     int *arr;
  61.     int arr_size = 10;
  62.     arr = (int *)malloc(arr_size * sizeof(int));
  63.  
  64.     printf("Enter value of element at index %d (EOF to stop input): ", *size - 1);
  65.     while (scanf("%d", &arr[*size - 1]) == 1)
  66.     {
  67.         getchar();
  68.         *size = *size + 1;
  69.         if (*size > arr_size)
  70.         {
  71.             arr_size += 10;
  72.             arr = realloc(arr, arr_size * sizeof(int));
  73.         }
  74.  
  75.         printf("Enter value of element at index %d (EOF to stop input): ", *size - 1);
  76.     }
  77.  
  78.     printf("\n");
  79.     *size = *size - 1;
  80.     return arr;
  81. }
  82.  
  83. void print_array(int *array, int size)
  84. {
  85.     printf("[");
  86.     for (int i = 0; i < size; i++)
  87.     {
  88.         printf("%d", array[i]);
  89.         if (i != size - 1)
  90.             printf(", ");
  91.     }
  92.  
  93.     printf("]\n");
  94. }
  95.  
  96. int biggest_odd(int *arr, int size)
  97. {
  98.     int max = arr[0];
  99.     for (int i = 0; i < size; i++)
  100.     {
  101.         if(arr[i] > max) {
  102.             if(arr[i] % 2 == 1) max = arr[i];
  103.         }
  104.     }
  105.  
  106.     return max;
  107. }
  108.  
  109. int smallest_even(int *arr, int size)
  110. {
  111.     int min = arr[0];
  112.     for (int i = 0; i < size; i++)
  113.     {
  114.         if(arr[i] < min) {
  115.             if(arr[i] % 2 == 0) min = arr[i];
  116.         }
  117.     }
  118.  
  119.     return min;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement