Записать в массив 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; }
Объяснение кода листинга программы
- Инициализировать массив Y пустым.
- Пройти по всем элементам массива X с помощью цикла for.
- Внутри цикла проверять, есть ли в массиве Y элемент, равный текущему элементу X[i].
- Если такого элемента нет, то записать текущий элемент X[i] в массив Y и увеличить индекс k.
- Если найден элемент, равный текущему, то прервать цикл с помощью оператора break.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д