Тема: Робота з символьними рядками
У мене є завдання : ввести речення і вилучити з нього всі слова, які містять задану двосимвольну комбінацію. Надрукувати скорочене речення та вказати скільки слів вилучено.
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
int main()
{
system("chcp 1251");
char sent[100], symb[3];
int words[50], withSymb[50], size = 51, k = 1, n = 0, del = 0,d=0;
words[0] = 0;
char* p = sent;
printf("\nВведіть речення: \n");
gets_s(sent);
printf("Введіть двосимвольну комбінацію: \n");
gets_s(symb);
for (int i = 0; i < size - 1; i++) {
if (*(p + i) >='\0 ' && *(p+i)<='@') {
words[k] = i;
k++;
}
if (*(p + i) == symb[0] && sent[i + 1] == symb[1]) {
withSymb[n] = k - 1;
n++;
}
}
if (n == 0) {
printf("В даному реченні слів з заданою комбінацією немає.\n");
return 0;
}
for (int i = 0; i < n && withSymb[i] != k - 1; i++) {
for (int j = words[i] - del; j < size - (words[i + 1] - words[i]); j++) {
sent[j] = sent[j + (words[i + 1] - words[i])];
}
for (int j = size - (words[i + 1] - words[i]); j < size; j++) {
sent[j] = '\0';
}
size -= (words[i + 1] - words[i]);
del += (words[i + 1] - words[i]);
d++;
}
if (withSymb[n - 1] == k - 1) {
sent[words[k - 1] - del] = '\0';
}
printf("Скорочене речення:");
puts(sent);
printf("Вилучено слів - %d\n",d);
return 0;
}
Програма працює погано + через це проблема з підрахунком вилучених слів. Допоможіть, будь ласка, це виправити.