Advertisement
Mirbek

8Lab

May 26th, 2022
854
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<stdarg.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include <locale.h>
  5.  
  6. typedef union{
  7.     int i;
  8.     double d;
  9. } result;
  10.  
  11. result min_function(char type, int num, ...);
  12.  
  13. int main()
  14. {
  15.     setlocale(LC_CTYPE, "Russian");
  16.     static int kol = 3;
  17.     if (kol == 3) {
  18.         printf("Введите 5 чисел: ");
  19.         int a1, a2, a3, a4, a5;
  20.         scanf("%d%d%d%d%d", &a1, &a2, &a3, &a4, &a5);
  21.         result ans = min_function('i', 5, a1, a2, a3, a4, a5);
  22.         printf("Минимальное число = %d\n", ans.i);
  23.     }
  24.     if (kol == 2) {
  25.         printf("Введите 7 чисел: ");
  26.         int a1, a2, a3, a4, a5, a6, a7;
  27.         scanf("%d%d%d%d%d%d%d", &a1, &a2, &a3, &a4, &a5, &a6, &a7);
  28.         result ans = min_function('i', 7, a1, a2, a3, a4, a5, a6, a7);
  29.         printf("Минимальное число = %d\n", ans.i);
  30.     }
  31.     if (kol == 1) {
  32.         printf("Введите 12 чисел: ");
  33.         int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12;
  34.         scanf("%d%d%d%d%d%d%d%d%d%d%d%d", &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10, &a11, &a12);
  35.         result ans = min_function('i', 12, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
  36.         printf("Минимальное число = %d\n", ans.i);
  37.     }
  38.     kol--;
  39.     if (kol)
  40.         return main();
  41.     return 0;
  42. }
  43.  
  44. result min_function(char type, int num, ...) {
  45.     result res;
  46.     va_list argptr;
  47.     va_start(argptr, num);
  48.     switch(type) {
  49.         case 'i':
  50.             res.i = va_arg(argptr, int);
  51.             for (int i = 1; i < num; i++) {
  52.                 int x = va_arg(argptr, int);
  53.                 if (res.i > x) res.i = x;
  54.             }
  55.             va_end(argptr);
  56.             break;
  57.         case 'd':
  58.             res.d = va_arg(argptr, double);
  59.             for (int i = 1; i < num; i++) {
  60.                 double x = va_arg(argptr, double);
  61.                 if (res.d > x) res.d = x;
  62.             }
  63.             va_end(argptr);
  64.             break;
  65.     }
  66.     return res;
  67. }
  68.  
Advertisement
RAW Paste Data Copied
Advertisement