Записать в массив Y только по одному элементу среди повторяющихся - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток! Не могу понять в чем проблема... Эта программа записывает в массив Y только по одному элементу среди повторяющихся. Но при вводе элементов изначального массива программа "встает" и на этом все. В чем тут косяк?
#include <stdio.h>
#include <conio.h>
#define n 10
 
void main()
{
     clrscr();
     int X[n], Y[n], i, j=1, k=0;
     printf("vvedite elementi massiva\n");
     for (i=0;i<n;i++)
      scanf("%d", & X[i]);
     for (i=0; i<n; i++)
     {
     while (j<n)
      {
      if (X[i]==X[j])
         {
         Y[i]=X[i];
         k++;
         j++;
         }
      else
         j++;
      }
      i++;
      j=0;
      }
if (k!=0)
   {
   printf("massiv Y:\n");
   for(j=0; j<k; j++)
   printf("%d", Y[i]);
   }
else
   printf("v massive X net povtor. elementov");
getch();
}

Решение задачи: «Записать в массив Y только по одному элементу среди повторяющихся»

textual
Листинг программы
  for(int j=i;j<n;j++)
      if(X[i]==X[j]   // элементы равны
        && Y[k]!=X[i] ) // и мы его не записывали
        {
         Y[k++]=X[i];   // записываем и увеличиваем индекс 
         break;
         }

Объяснение кода листинга программы

  1. Инициализировать массив Y пустым.
  2. Пройти по всем элементам массива X с помощью цикла for.
  3. Внутри цикла проверять, есть ли в массиве Y элемент, равный текущему элементу X[i].
  4. Если такого элемента нет, то записать текущий элемент X[i] в массив Y и увеличить индекс k.
  5. Если найден элемент, равный текущему, то прервать цикл с помощью оператора break.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы