В каждом слове строки удалить все последующие вхождения первого символа этого слова - C (Си)
Словом считать любую последовательность, содержащую только русские и латинские буквы. Разделители между словами и их количество может быть любым. В каждом слове строки удалить все последующие вхождения первого символа этого слова.
Буду благодарен тем, кто поможет.
Получилось только написать код, который берёт самый первый символ строки и во всех последующих словах удаляет его.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <clocale>
#include <string.h>
void Delete_Symbol(int len, char* str, char* result) {
printf("Введите текст (на английском):\n"); fgets(str, len, stdin);
char symbol = str[0];
result[0] = symbol;
for (int i = 0, j = 1; i < len; i++) {
if (str[i] != symbol) {
result[j++] = str[i];
}
}
printf("Готовый текст: %s", result);
}
int main() {
setlocale(LC_ALL, "rus");
const int len = 100;
char str[len];
char result[len];
Delete_Symbol(len, str, result);
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Попробуйте при проходе по строке хранить состояние state, начальное 0
Если состояние 0, и встретили букву (isalpha), то запоминаете букву и делаете state=1
Если state==1 и встретили не букву, то меняете state на 0, иначе смотрите, не совпадает ли буква с запомненной.