Удалить из символьного массива все двойные символы - C (СИ)
Формулировка задачи:
Задан символьный массив размера N. Удалить из массива все двойные символы (два одинаковых символа являются соседями). Какой логикой или порядком выполнения пользоваться?
Решение задачи: «Удалить из символьного массива все двойные символы»
textual
Листинг программы
#include <stdio.h> void print(int a[], unsigned n) { while (n--) { printf("%d ", *a++); } printf("\n"); } unsigned pack(int a[], unsigned n) { unsigned offs = 0, i; for (i = 1; i < n; ++i) { if (a[i - 1] == a[i]) { offs++; } else { a[i - offs] = a[i]; } } return n - offs; } int main() { int a[] = {0, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 9}; unsigned n = sizeof(a) / sizeof(*a); print(a, n); n = pack(a, n); print(a, n); return 0; }
Объяснение кода листинга программы
В этом коде представлена функция pack
, которая удаляет все пары одинаковых символов из символьного массива. Функция print
используется для печати массива до и после удаления пар одинаковых символов.
Список действий:
- Инициализировать переменную
offs
со значением 0 и переменнуюi
со значением 1. - Начать цикл
for
, который будет проходить по всем элементам массива, начиная со второго элемента. - Проверить, равен ли текущий элемент предыдущему. Если да, то увеличить значение переменной
offs
на 1. - Если текущий элемент не равен предыдущему, то переместить значение текущего элемента в позицию
i - offs
. - Продолжать цикл до тех пор, пока не будет достигнут последний элемент массива.
- Вернуть значение
n - offs
, которое будет представлять новое количество элементов в массиве после удаления пар одинаковых символов. - Вызвать функцию
print
для печати массива до удаления пар одинаковых символов. - Вызвать функцию
pack
для удаления пар одинаковых символов из массива. - Вызвать функцию
print
для печати массива после удаления пар одинаковых символов. - Вернуть 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д