Удалить из текста все повествовательные предложения - C (СИ)
Формулировка задачи:
Помогите пожалуйста с задачей. Где я ошибся? Я только учусь) Вот текст задачи: Дан текст удалить из него все повествовательные предложения.
Вот то, что я нарешал):
Заранее спасибо) Если можно, не просто дать решение, расписать по возможности, чтобы понять.. )) спс.
#include <stdio.h> #include <conio.h> char *udalenie (char str[]) { int a=0; char mas[100]; for(int i=0; i<=strlen(str); i++) { if(str[i]=='!' || str[i]=='?') { while(a<i) { mas[a]=str[a]; a++; } } else if(str[i]=='.') { a=i+1; } } return mas; } void main(void) { clrscr(); char str[100], mas[100]; gets (str); udalenie (str); for(int i=0; i<=strlen(mas); i++) printf("%c", mas[i]); getch(); }
Решение задачи: «Удалить из текста все повествовательные предложения»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #define MAX 100 void main() { char line[MAX]={}; char new_line[MAX]={}; int index=0; const char* p_line=new_line; int i,a,b; a=b=0; printf("Please input your string:\n"); gets(line); for(i=0;i<MAX;++i) { if(line[i]=='.') index=i+1; if(line[i]=='!'||line[i]=='?') { for(a=index;a<i+1;++a) { new_line[b]=line[a]; ++b; } index=i+1; } } printf("%s", p_line); getch(); }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Объявляются переменные:
- line[MAX] - строка, в которую будет вводиться текст.
- new_line[MAX] - новая строка, в которой будут храниться предложения без повествовательных.
- index - индекс, который будет отслеживать текущий символ в строке.
- p_line - указатель на начало строки new_line.
- i, a, b - переменные-счетчики для обработки строки.
- Выводится приглашение для ввода строки.
- С помощью функции gets() вводится строка в переменную line.
- В цикле for перебираются все символы строки.
- Если текущий символ равен '.', то индекс следующего символа после точки записывается в переменную index.
- Если текущий символ равен '!' или '?', то в новую строку new_line начиная с индекса b (который инициализируется как 0) копируются все символы до следующего символа после точки (до index).
- Значение index обновляется, чтобы оно стало равным index+1.
- После обработки всех символов выводится новая строка new_line.
- Программа ожидает нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д