Удалить один из повторяющихся элементов массива - C (СИ)
Формулировка задачи:
Всем доброй ночи, как сделать, чтобы в массиве, в котором следующий элемент = предыдущем, т.е. если дан массив A:
1 1 2 2 4 4 7 7
удалить один, из повторяющихся элементов, т.е. должно получиться так: 1 2 4 7..
Заранее спасибо)
Решение задачи: «Удалить один из повторяющихся элементов массива»
textual
Листинг программы
#include "stdafx.h" #include "conio.h" int _tmain(int argc, _TCHAR* argv[]) { int i, j; int mas[] = {1,1,2,2,4,4,7,7}; int dlina = 8; for(i = 0; i < 7; i++) { if ((mas[i] == mas[i + 1]) && mas[i] != 0) { for (j = i + 1; j < 7; j++) { mas[j] = mas[j + 1]; } mas[dlina - 1] = 0; dlina--; } } for(i = 0; i < 7; i++) { printf("%d\n",mas[i]); } getch(); return 0; }
Объяснение кода листинга программы
В этом коде реализована функция, которая удаляет дубликаты из массива.
- Сначала объявляются переменные:
i
иj
- используются для прохождения по массиву;mas[]
- это сам массив, в котором нужно удалить дубликаты;dlina
- это переменная, которая хранит длину массива.
- Затем происходит проход по массиву с помощью цикла
for
. В каждой итерации проверяется текущий элемент массива и следующий за ним. Если они равны и не равны нулю (чтобы исключить случай, когда последний элемент массива равен нулю), то происходит перестановка элементов с помощью еще одного циклаfor
. После этого, в последней ячейке массива (которая теперь пуста) записывается ноль, и переменнаяdlina
уменьшается на единицу, так как один элемент был удален. - После удаления всех дубликатов происходит проход по массиву с помощью цикла
for
и выводится каждый элемент массива. - В конце программы вызывается функция
getch()
, которая ожидает нажатия клавиши, и функцияreturn 0;
, которая завершает выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д