Удалить из строки все повторно входящие в неё символы - 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 выполняется следующая последовательность действий:
- В первой строке вводится строка, из которой необходимо удалить повторяющиеся символы. Эта строка сохраняется в массиве символов типа char с названием
str. - Затем создаются три переменные:
i- используется для прохождения по каждому символу исходной строки.j- используется для прохождения по каждому символу второй раз, начиная с первого найденного повторяющегося символа.d- используется для нахождения длины строки.
- Далее, с помощью цикла while, происходит проход по каждому символу строки до тех пор, пока не будет найден символ конца строки '\0'. Значение переменной
dувеличивается на единицу после каждого прохода цикла, что позволяет найти длину строки. - Затем, с помощью двух вложенных циклов for, происходит удаление повторяющихся символов:
- Внешний цикл for проходит по каждому симвору исходной строки.
- Внутренний цикл for проходит по всем символам, начиная с первого найденного повторяющегося символа (переменная
j). Если символ в текущей позиции равен символу в позицииj, то символ в позицииjзаменяется на символ конца строки '\0'. Это приводит к удалению всех повторяющихся символов.
- Наконец, с помощью цикла for выводятся все символы исходной строки, кроме символов конца строки '\0'. Это делается с помощью оператора continue во внутреннем цикле for.
- В конце программы выводится символ новой строки, чтобы перейти на новую строку.
- Программа возвращает 0, что означает успешное выполнение.