Advertisement
Qellex

lab4.1 - 6

Dec 2nd, 2022
712
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | None | 0 0
  1. #include <stdio.h>
  2. #include "locale.h"
  3. // сравниваем и меняем местами числа
  4. void compareAndSwap(int* a, int* b, int dir) {
  5.     if (*a == *b) {
  6.         return;
  7.     }
  8.     if (*a < *b && dir == -1 || *a > *b && dir == 1) {
  9.         int tmp = *a;
  10.         *a = *b;
  11.         *b = tmp;
  12.     }
  13. }
  14. // подаем на сравнение все варианты на сравнения, что бы получить нужную очередь
  15. void sort(int* a, int* b, int* c, int* d, int dir) {
  16.     compareAndSwap(a, c, dir);
  17.     compareAndSwap(b, d, dir);
  18.     compareAndSwap(a, b, dir);
  19.     compareAndSwap(c, d, dir);
  20.     compareAndSwap(b, c, dir);
  21. }
  22.  
  23. int main() {
  24.     // подключение руссого языка
  25.     setlocale(LC_ALL, "rus");
  26.  
  27.     int a, b, c, d, dir; // переменные для чисел
  28.  
  29.     // ввод данных
  30.     do {
  31.         printf("Введите числа a b c d dir(-1, 1) через пробел: ");
  32.         scanf_s("%d%d%d%d%d", &a, &b, &c, &d, &dir);
  33.         if ((dir == 1) || (dir == -1)) { break; } // проверка на корректность ввода dir
  34.     } while (true);
  35.  
  36.     sort(&a, &b, &c, &d, dir); // Подаем список в функцию и меняем их
  37.     printf("%d %d %d %d\n", a, b, c, d); // вывод сортированного списка
  38.  
  39.     do {
  40.         printf("Введите числа a b c d dir(-1, 1) через пробел: ");
  41.         scanf_s("%d%d%d%d%d", &a, &b, &c, &d, &dir);
  42.         if ((dir == 1) || (dir == -1)) { break; }
  43.     } while (true);
  44.  
  45.     sort(&a, &b, &c, &d, dir);
  46.     printf("%d %d %d %d\n", a, b, c, d);
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement