Advertisement
dmkozyrev

compare

Jan 22nd, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.04 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void swap(double * a, double * b){
  4. //  Обменивает значениями два вещественных числа a и b
  5. //  Входные параметры: указатель на вещественное число a и указатель на вещественное число b
  6.     double temp = *a;
  7.     *a = *b;
  8.     *b = temp;
  9. }
  10.  
  11. void bubble_sort(double * a, int N){
  12. //  Сортирует массив a по не убыванию сортировкой пузырьком
  13. //  Входные параметры: указатель на начало массива вещественных чисел a и количество элементов в нем N
  14.     int i, j;
  15.     for (i = 0; i < N-1; i++)
  16.         for (j = i+1; j < N; j++)
  17.             if (a[i] > a[j])
  18.                 swap(&a[i], &a[j]);
  19. }
  20.  
  21. int compare(double * a, double * b, int N, int M){
  22. //  Сравнивает два массива и возвращает:
  23. //  -1, если все элементы первого массива меньше всех элементов второго массива
  24. //  1, если все элементы первого массива больше всех элементов второго массива
  25. //  0, иначе
  26. //  Входные параметры:
  27. //  указатель на массив a и количество элементов в нем N
  28. //  указатель на массив b и количество элементов в нем M
  29.     bubble_sort(a, N); // Сортируем первый массив
  30.     bubble_sort(b, M); // Сортируем второй массив
  31.    
  32. //  Затем нам достаточно только сравнить конечные и начальные элементы этих массивов:
  33.     if (a[N-1] < b[0]) // если конец первого больше начала второго, то -1
  34.         return -1;
  35.     else if (a[0] > b[M-1]) // если начало первого больше конца второго, то 1
  36.         return 1;
  37.     else // Иначе 0
  38.         return 0;
  39. }
  40.  
  41. void fill_mas(double * mas, int N, int a, int b){
  42. //  Заполняет массив случайными числами, которые берутся из отрезка [a, b]
  43.     int i;
  44.     for(i = 0; i < N; i++)
  45.         mas[i] = rand()%(b-a+1)+a;
  46. }
  47.  
  48. void print_mas(double * a, int N){
  49. //  Печатает весь массив на экран
  50.     int i;
  51.     for(i = 0; i < N; i++)
  52.         printf("%f ", a[i]);
  53.     printf("\n");
  54. }
  55.  
  56. int main(){
  57.     unsigned const int N = 5;
  58.     unsigned const int M = 3;
  59.     double a[N], b[M];
  60.    
  61.     fill_mas(a, N, -10, 0); // Заполняем массив a числами от -10 до 0
  62.     fill_mas(b, M, 1, 10); // Заполняем массив b числами от 1 до 10
  63.    
  64.     print_mas(a, N); // Выводим массив a на экран
  65.     print_mas(b, M); // Выводим массив b на экран
  66.    
  67.     int res = compare(a, b, N, M); // Сравниваем массив a и массив b
  68.     printf("res = %d", res); // Выводим результат сравнения на экран
  69.    
  70.     return 0;  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement