Удалить из строки все повторно входящие в неё символы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана строка S. Удалить из неё всё повторно входящие в неё символы и напечатать результат.

Решение задачи: «Удалить из строки все повторно входящие в неё символы»

textual
Листинг программы
#include <stdio.h>
#define N 255
    int main(void){
    char str[N]="aaaa. aaa fjd";
    int i, j=0, d=0;
    while(str[d])++d;
    for(i=0; i<d; ++i)
    {
        if(str[i]=='\0'){++j; continue;}
        j=i+1;
        for(; j<d; ++j)
        {
            if(str[i]==str[j])str[j]='\0';
        }
    }
    for(i=0; i<d; ++i)
        {
            if(str[i]=='\0')
                continue;
            else
                printf("%c",str[i]);
        }
puts("");
    return 0;
 }

Объяснение кода листинга программы

В этом коде на языке C выполняется следующая последовательность действий:

  1. В первой строке вводится строка, из которой необходимо удалить повторяющиеся символы. Эта строка сохраняется в массиве символов типа char с названием str.
  2. Затем создаются три переменные:
    • i - используется для прохождения по каждому символу исходной строки.
    • j - используется для прохождения по каждому символу второй раз, начиная с первого найденного повторяющегося символа.
    • d - используется для нахождения длины строки.
  3. Далее, с помощью цикла while, происходит проход по каждому символу строки до тех пор, пока не будет найден символ конца строки '\0'. Значение переменной d увеличивается на единицу после каждого прохода цикла, что позволяет найти длину строки.
  4. Затем, с помощью двух вложенных циклов for, происходит удаление повторяющихся символов:
    • Внешний цикл for проходит по каждому симвору исходной строки.
    • Внутренний цикл for проходит по всем символам, начиная с первого найденного повторяющегося символа (переменная j). Если символ в текущей позиции равен символу в позиции j, то символ в позиции j заменяется на символ конца строки '\0'. Это приводит к удалению всех повторяющихся символов.
  5. Наконец, с помощью цикла for выводятся все символы исходной строки, кроме символов конца строки '\0'. Это делается с помощью оператора continue во внутреннем цикле for.
  6. В конце программы выводится символ новой строки, чтобы перейти на новую строку.
  7. Программа возвращает 0, что означает успешное выполнение.

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

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