Advertisement
semenrbt

Kristina_2.4.1

Feb 4th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. // Она короч требует во 2 билете сделать 1 из заданий, используя динамические массивы
  5.  
  6.  
  7. int *CreateArray(int N, int min, int max){ // Это функ-я создания массива, заполняя его рандомными элементами
  8.     int *mas = NULL;                         // В диапазоне от min do max
  9.     if(max < min)
  10.     {
  11.         int s = min;
  12.         min = max;
  13.         max = s;
  14.     }
  15.     mas = (int*) malloc(sizeof(int)*N);
  16.     if(mas == NULL) return NULL;
  17.     for(int k = 0; k < N; k++)
  18.         mas[k] = rand()%(max - min + 1) + min;
  19.     return mas;
  20. }
  21.  
  22.  
  23. int main()
  24. {
  25.   srand(time(NULL)); // Это вроде запускает таймер для того чтобы брать рандомные числа функцией rand()
  26.   const int N = rand()%10 + 1; // Берем рандомное число - размер массива
  27.   int * A = CreateArray(N, -10, 10); // Создаем массив из N элементов в диапазоне от -10 до 10
  28.   int * B = CreateArray(N, 0, 0); // Создаем такой же массив только из нулей
  29.   if(A == NULL){ // Проверка
  30.         printf("Error.\n");
  31.         return 0;
  32.   }
  33.   printf("A[%d] = {", N); // Выводим на экран массив А
  34.   for(int k = 0; k < N; k++)
  35.       printf("%d, ", A[k]);
  36.   printf("};\n");
  37.  
  38.  
  39.   int m = 0, n = 0, b = 0; // Тут короч пробегаемся по массиву A, считаем кол-во элементов
  40.   for(int k = 0; k < N; k++)  // Которые меньше нуля, равны нулю, больше нуля
  41.   {                           // m - те, что меньше; n - те, что равны; b - те, что больше соответсвенно
  42.     if(A[k] < 0) m++;
  43.     else{
  44.       if(A[k] > 0) b++;
  45.       else{
  46.         if(A[k] == 0) n++;
  47.       }
  48.     }
  49.   }
  50.   int mk = m, nk = n, bk = b;
  51.   for(int k = 0; k < N; k++) // А теперь просто расставляем все элементы по координатам
  52.   {
  53.     if(A[k] < 0){
  54.       B[m - mk] = A[k];
  55.       mk--;
  56.     }
  57.     else
  58.     {
  59.       if(A[k] > 0)
  60.       {
  61.         B[m + n + (b - bk)] = A[k];
  62.         bk--;
  63.       }
  64.     }
  65.   }
  66.   printf("B[%d] = {", N); // Выводим результат и освобождаем память
  67.   for(int k = 0; k < N; k++)
  68.       printf("%d, ", B[k]);
  69.   printf("};\n");
  70.   free(A);
  71.   free(B);
  72.  
  73.   return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement