Удалить из текста все повествовательные предложения - 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();
 }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы.
  2. Объявляются переменные:
    • line[MAX] - строка, в которую будет вводиться текст.
    • new_line[MAX] - новая строка, в которой будут храниться предложения без повествовательных.
    • index - индекс, который будет отслеживать текущий символ в строке.
    • p_line - указатель на начало строки new_line.
    • i, a, b - переменные-счетчики для обработки строки.
  3. Выводится приглашение для ввода строки.
  4. С помощью функции gets() вводится строка в переменную line.
  5. В цикле for перебираются все символы строки.
  6. Если текущий символ равен '.', то индекс следующего символа после точки записывается в переменную index.
  7. Если текущий символ равен '!' или '?', то в новую строку new_line начиная с индекса b (который инициализируется как 0) копируются все символы до следующего символа после точки (до index).
  8. Значение index обновляется, чтобы оно стало равным index+1.
  9. После обработки всех символов выводится новая строка new_line.
  10. Программа ожидает нажатия клавиши.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5
Похожие ответы