Удалить из символьного массива все двойные символы - 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 используется для печати массива до и после удаления пар одинаковых символов. Список действий:

  1. Инициализировать переменную offs со значением 0 и переменную i со значением 1.
  2. Начать цикл for, который будет проходить по всем элементам массива, начиная со второго элемента.
  3. Проверить, равен ли текущий элемент предыдущему. Если да, то увеличить значение переменной offs на 1.
  4. Если текущий элемент не равен предыдущему, то переместить значение текущего элемента в позицию i - offs.
  5. Продолжать цикл до тех пор, пока не будет достигнут последний элемент массива.
  6. Вернуть значение n - offs, которое будет представлять новое количество элементов в массиве после удаления пар одинаковых символов.
  7. Вызвать функцию print для печати массива до удаления пар одинаковых символов.
  8. Вызвать функцию pack для удаления пар одинаковых символов из массива.
  9. Вызвать функцию print для печати массива после удаления пар одинаковых символов.
  10. Вернуть 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы