Удалить из строки все сдвоенные, строенные, и т.д. символы - C (СИ)
Формулировка задачи:
Помогите пожалуйста)
вот задание)
Составить программу, которая вводит строку символов, выполняет
ее обработку в соответствии с заданием и выводит результаты.
Задание: удалить из строки все сдвоенные, строенные и т.д.
символы
Решение задачи: «Удалить из строки все сдвоенные, строенные, и т.д. символы»
textual
Листинг программы
#include <stdio.h>
const int N = 20;
int main()
{
char s[N], s1[N];
int i = 0, flag = 0, j = 0;
printf("Input string:\n");
while((s[i] = getchar()) != EOF && s[i] != '\n' && i < N - 1){
if(s[i] == s[i - 1]){
flag = 1;
i++;
}
else
flag = 0;
if(flag == 0){
s1[j] = s[i];
i++;
j++;
}
}
s1[j] = '\0';
printf("%s\n", s1);
return 0;
}
Объяснение кода листинга программы
В этом коде задача удаления повторяющихся символов из строки. Вот список действий, которые происходят в коде:
- Ввод строки с помощью функции
getchar(). - Создание двух массивов символов:
sиs1. - Инициализация счётчика
iдля цикла, который будет проходить по каждому символу строки. - Инициализация флага
flagдля проверки на повторяющиеся символы. - Начало цикла, который проходит по каждому символу строки.
- Проверка, является ли текущий символ таким же, как предыдущий. Если да, то изменяется флаг
flag. - Если флаг
flagравен 0, то текущий символ копируется в массивs1. - После окончания цикла, в массиве
s1остаётся строка без повторяющихся символов. - Добавление нулевого символа в конец массива
s1с помощьюs1[j] = '\0';. - Вывод результата с помощью функции
printf(%s\n, s1);. - Возврат 0, что означает успешный конец работы программы.