Удаление комбинации символов из массива. - C (СИ)
Формулировка задачи:
Доброго времени суток. Прошу помочь в таком вопросе: нужно удалить из введённой (не более 100 знаков) строки комбинацию букв "the".
#include <stdio.h>
#include <conio.h>
int main ()
{
char str[100],str1[100];
int i,x,j;
printf ("Vvedite stroku simvolov(ne bolee 100 elementov)\n");
scanf ("%s",str);
x=sizeof str/sizeof str[0];
for (i=0;i<x;i++)
{
if (str[i]=='t'&&str[i+1]=='h'&&str[i+2]=='e')
{
for (j=i;j<i+3;j++)
{
str1[j]=str[i];
}
}
}
printf ("%s",str1);
getch();
return 0;
}Решение задачи: «Удаление комбинации символов из массива.»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
int main ()
{
char str[100];//, str1[100]; можно обойтись одним массивом
int i, x, j;
printf ("Vvedite stroku simvolov(ne bolee 100 elementov)\n");
scanf ("%s", &str);
x = sizeof(str) / sizeof(char);
//printf("%d, %s", x, str);
j = 0;
for (i=0; i<x; i++)
{
//когда встречаем комбинацию "the"
if (str[i-3]=='t'&&str[i-2]=='h'&&str[i-1]=='e')
{
//"откатываемся" назад на три символа.
j -= 3;
}
str[j] = str[i];
j++;
}
printf ("%s",str);
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлен массив символов
strразмером 100 символов. - С помощью функции
scanfв этот массив считывается строка символов, введенная пользователем. - Вычисляется размер массива
strв байтах, который сохраняется в переменнойx. - В переменной
jинициализируется счетчик, который будет использоваться для отслеживания индекса первого символа комбинацииtheв массивеstr. - В цикле
forпроисходит сравнение каждого символа массиваstrс символами комбинацииthe. Если комбинация найдена, то счетчикjоткатывается назад на три символа, чтобы сохранить остальные символы без изменений. - После цикла
forвыводится массивstr. - В конце программы вызывается функция
getch, которая ожидает нажатия клавиши пользователем, и функцияreturn 0, которая завершает программу.