Удалить из массива все одинаковые вхождения элементов, оставив их по одному - C (СИ) (72666)
Формулировка задачи:
ТЗ: дан массив А(n). Удалить из массива все одинаковые вхождения элементов, оставив их по одному.
Мой код удаляет все повторяющиеся элементы полностью. Помогите исправить.
Листинг программы
- #include<stdio.h>
- #include<time.h>
- int main(){
- int a[20];
- for (int i=0; i<5; i++){
- printf("a[%d]=",i);
- scanf("%d", &a[i]);
- }
- printf("\n");
- for (int i=0; i<5; i++){
- bool flag=true;
- for (int j=0; j<5; j++)
- if (i-j!=0 && a[i]==a[j]) flag=false;
- if (flag) printf("%d ",a[i]);
- }
- return 0;
- }
Решение задачи: «Удалить из массива все одинаковые вхождения элементов, оставив их по одному»
textual
Листинг программы
- for(i=0; i<5; i++) {
- for(j=0; j<i; j++)
- if (a[i]==a[j]) break;
- if (j==i) printf("%d ", a[i]);
- }
Объяснение кода листинга программы
В данном коде выполняется проверка наличия повторяющихся элементов в массиве и их удаление.
- Создается два вложенных цикла. Первый цикл выполняется 5 раз, второй - столько раз, сколько выполнится первый.
- Внутри второго цикла проверяется равенство текущего элемента массива с каждым предыдущим элементом. Если равенство найдено, то из второго цикла выход выполняется с помощью оператора break.
- Если второй цикл был выполнен полностью, то это означает, что в массиве не было найдено повторяющихся элементов, и текущий элемент массива (a[i]) выводится на экран с помощью функции printf.
- Если второй цикл был прерван оператором break, то на экран выводится значение переменной i, которое является индексом первого вхождения элемента, подлежащего удалению.
- В конце программы отсутствует закрывающая фигурная скобка, что говорит о наличии ошибки в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д