Удалить из массива все одинаковые вхождения элементов, оставив их по одному - C (СИ) (72665)
Формулировка задачи:
ТЗ: дан массив А(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
Листинг программы
#include <stdio.h> //наивный алгоритм O(n^2) int* unique_del(int* f, int *l){ int t, *p; for(; f != l; ++f){ p = f + 1; while(p < l){ if(*p == *f){ t = *(l - 1); *(l - 1) = *p; *p = t; --p; --l; } ++p; } } return l; } int main(void){ int* p, *e; int A[] = { 1, 2, 2, 3, 1, 3, 4, 1, 3, 3, 5, 4, 6, 5 }; e = unique_del(A, A + sizeof(A)/sizeof(A[0])); for(p = &A[0]; p != e; ++p) printf("%d ", *p); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д