Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.90 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "iostream"
  3. #include "stdlib.h"
  4.  
  5.  
  6. #define N 18
  7. using namespace std;
  8.  
  9. int search_s(int* k, int n, int key);
  10. int search_q(int* k, int n, int key);
  11. int search_t(int* k, int n, int key);
  12. int search_bin(int* k, int n, int key);
  13.  
  14. int search_s(int* k, int n, int key)
  15. {
  16.     int f = 0;
  17.     for (int i = 0; i < n; i++)
  18.     {
  19.        
  20.         if (k[i] == key) {
  21.             printf("Элемент с индексом %d равен %d\n", i, key);
  22.             f = 1;
  23.         }
  24.     }
  25.  
  26.     if (f == 0) printf("Элементов равных number в массиве нет!\n");
  27.     return 0;
  28. }
  29.  
  30. int search_q(int* k, int key)
  31. {
  32.     int i = 0;
  33.     int farr[18];
  34.     for (i = 0; i < 17; i++)
  35.     {
  36.         farr[i] = k[i];
  37.     }
  38.     farr[17] = key;
  39.     for (i = 0; ; i++)
  40.     {
  41.         if (farr[i] == key)
  42.         {
  43.             break;
  44.         }
  45.     }
  46.     if (i <= 16)
  47.     {
  48.         printf("Алгоритм поиска Q нашел соответсвие\n");
  49.         return 1;
  50.     }
  51.     else
  52.     {
  53.         printf("Алгоритм поиска Q не нашел соотвествие\n");
  54.         return 0;
  55.     }
  56. }
  57. int search_t(int* k, int n, int key)
  58. {
  59.     for (int i = 0; i < n; i++)
  60.     {
  61.         if (key <= k[i] )
  62.             if (k[i] == key) {
  63.                 printf("Элемент с индексом %d равен %d\n", i, key);
  64.                 break;
  65.             }
  66.             else printf("Элементов равных number в массиве нет!\n");
  67.     }
  68.     return 0;
  69. }
  70.  
  71. int search_bin(int* k, int n, int key) {
  72.     int l = 0;            // нижняя граница
  73.     int u = N - 1;    // верхняя граница
  74.  
  75.     while (l <= u) {
  76.         int m = (l + u) / 2;
  77.         if (k[m] == key) return m;
  78.         if (k[m] < key) l = m + 1;
  79.         if (k[m] > key) u = m - 1;
  80.     }
  81.     return -1;
  82. }
  83.  
  84. void main()
  85. {
  86.     system("chcp 1251");
  87.     system("cls");
  88.     cout  << "S алгоритм" << "\n";
  89.     int mass_one[N];
  90.     for (int i = 0; i < N; i++)
  91.     {
  92.         if (i % 2 == 0)
  93.             mass_one[i] = i + 2;
  94.         else mass_one[i] = i - 2;
  95.     }
  96.     int point;
  97.     int number;
  98.     printf("Введите искомое число: ");
  99.     scanf_s("%d", &number);
  100.     for (int i = 0; i < N; i++)
  101.     {
  102.         cout << mass_one[i] << " ";
  103.  
  104.     }
  105.     cout << endl;
  106.    
  107.     search_s(mass_one, N, number);
  108.    
  109.  
  110.  
  111.     point = 0;
  112.     cout << " Q алгоритм" << "\n";
  113.     search_q(mass_one, number);
  114.    
  115.     cout << "T алгоритм" << "\n";
  116.    
  117.     int tmp;
  118.     for (int i = 0; i < N-1; i++) // i - номер прохода
  119.     {
  120.         for (int j = 0; j < N-1; j++) // внутренний цикл прохода
  121.         {
  122.             if (mass_one[j + 1] < mass_one[j])
  123.             {
  124.                 tmp = mass_one[j + 1];
  125.                 mass_one[j + 1] = mass_one[j];
  126.                 mass_one[j] = tmp;
  127.             }
  128.         }
  129.     }
  130.     for (int i = 0; i < N; i++)
  131.     {
  132.         cout << mass_one[i] << " ";
  133.     }
  134.     cout << endl;
  135.     search_t(mass_one, N, number);
  136.  
  137.     cout << "BIN алгоритм" << "\n";
  138.     point = search_bin(mass_one, N, number);
  139.     if (point == -1)
  140.         printf("Элементов равных number в массиве нет!\n");
  141.     else
  142.         printf("Элемент с индексом %d равен %d", point, number);
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement