Advertisement
semenrbt

Kristina_2.4.3

Feb 4th, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 15
  4.  
  5. /*Дан массив целых чисел, элементы которого расположены по возрастанию, причем есть
  6. совпадающие. Исключить из массива одинаковые элементы*/
  7.  
  8.  
  9. // Чтоб выгнать элемент из массива, нужно сдвигать его вправо и менять воображаемый размер массива
  10. int main()
  11. {
  12.   int x[N] = {-5, -5, -4, -3, -3, -3, -3, 1, 1, 1, 1, 1, 2, 3, 4};
  13.   // По условию элементы расставлены по возрастанию
  14.   int M = N;
  15.   int s = 1, i = 0;
  16.   for(int k = 1; k < M; k++)
  17.   {
  18.     if(x[k] == x[k - 1])
  19.     {
  20.       while(x[k+s] == x[k]) s++; // Считаем кол-во совпадающих элементов справа
  21.       s--; // Вычитаем единицу, т.к изначально s был равен 1
  22.       for(int f = 0; f < (2+s); f++) // 2+s - кол-во элементов, которые надо выгнать
  23.       {
  24.         i = k - 1; // i - тот элемент, который будем исключать
  25.         while(i < M-1)
  26.         {
  27.           x[i] = x[i+1];
  28.           i++;
  29.         }
  30.         M--; //  Меняем воображаемый размер массива
  31.       }
  32.       k = 0;
  33.       s = 1;
  34.     }
  35.   }
  36.   printf("A[%d] = {", M); // Выводим на экран результат
  37.   for(int k = 0; k < M; k++)
  38.       printf("%d, ", x[k]);
  39.   printf("};\n");
  40.  
  41.  
  42.   return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement