Удалить из массива все одинаковые вхождения элементов, оставив их по одному - 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, которое является индексом первого вхождения элемента, подлежащего удалению.
- В конце программы отсутствует закрывающая фигурная скобка, что говорит о наличии ошибки в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д