Прекращение ввода текста. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести текст с клавиатуры, число строк которого не превышает 16, а также массив символов-разделителей. Ввод текста прекращается, если две последние строки имеют одинаковую длину и заканчиваются на одно слово. Получил вот такое задание, но никак не могу понять как это реализовать. Думаю использовать двухмерные массив char, но как разбить на слова и сравнивать их никак не возьму в толк. Получается массив строк, где строки сами массивы слов? Помогите пожалуйста, если не в тягость.

Решение задачи: «Прекращение ввода текста.»

textual
Листинг программы
    int main(void)
    {   
        int i=0,lg[16],j=0,i2=0;
        char txt[MAXSTR][MAXLINE],sep[6],s[MAXSTR][MAXLINE];
        char *word;
 
        puts("Enter array of separators: \n");
        scanf("%s",sep);
 
        puts("Enter text: \n");
        while(i<MAXSTR)
        {
            scanf("%s",txt[i]);
            i2=0;
            j=strlen(txt[i]);
            while(j>0)
            {
                s[i][i2]=txt[i][j-1];
                i2=i2+1;
                j=j-1;
            }
            s[i][i2]='\0';
            if (strlen(txt[i])==strlen(txt[i-1]))
            {
                if (strcmp(strtok(s[i],sep),strtok(s[i-1],sep))==0)
                {break;}
            }
            i=i+1;
        };
                
        getch();
            
        return 0;
    }

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

  1. Объявлены следующие переменные:
    • i = 0 (указатель на текущий символ в тексте)
    • lg = 16 (массив для хранения длины слов)
    • j = 0 (указатель на текущее слово в тексте)
    • i2 = 0 (вспомогательный указатель для обработки текущего слова)
    • txt = MAXSTR x MAXLINE (массив для хранения текста)
    • sep = 6 (массив для хранения разделителей)
    • s = MAXSTR x MAXLINE (массив для хранения обработанного текста)
    • word = (указатель на текущее слово в тексте)
  2. Пользователю предлагается ввести массив разделителей.
  3. Пользователю предлагается ввести текст.
  4. Пока есть символы в тексте, выполняется следующий цикл:
    • Считывается текущее слово из текста.
    • Инициализируется вспомогательный указатель i2 для обработки текущего слова.
    • Считывается длина текущего слова.
    • Пока есть символы в текущем слове, выполняется следующий цикл:
      • В массиве s[i] записывается текущий символ.
      • Вспомогательный указатель i2 увеличивается на 1.
      • Длина текущего слова уменьшается на 1.
    • Если длина текущего слова равна длине предыдущего слова и слова совпадают, то цикл прерывается.
    • Указатель i увеличивается на 1.
  5. Выводится сообщение об успешном завершении ввода.

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


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

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

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