Создать текст. Вывести на экран все слова, в которых есть двойные буквы - C (СИ)

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

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

Создать текст. Вывести на экран все слова, у которых есть двойные буквы (класс, группа и т.д.).Исходный текст находится в файле. Предложения разделяются символами '.', '!', ‘?’. Помогите плез аутисту

Решение задачи: «Создать текст. Вывести на экран все слова, в которых есть двойные буквы»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
void double_letters(char* );
int main()
{
    char str[] = "fdf dd";
    double_letters(str);
    return 0;
}
void double_letters(char* str)
{
    char delim[] = " \t\n,.?!;:", *first, *last;
    int j, flag = 0, sym = 1, db = 0;
    for( ; *str; str++, sym = 1){
        for(j = 0; delim[j]; j++)
            if(*str == delim[j])
                sym = 0;
        if(sym){
            if(!flag){
                first = str;
                flag = 1;
            }
            if(flag){
                if(*str == *(str - 1))
                    db = 1;
                if(*(str + 1) == '\0' && db){
                    while(*first)
                        putchar(*first++);
                    putchar('\n');
                }
 
            }
        }
        else{
            if(flag){
                last = str - 1;
                flag = 0;
                if(db){
                    while(last >= first)
                        putchar(*first++);
                    putchar('\n');
                    db = 0;
                }
            }
        }
    }
}

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

В этом коде реализована функция double_letters, которая принимает строку в качестве аргумента и выводит на экран все слова, в которых есть двойные буквы. Список действий, которые выполняются в коде:

  1. Создаются две строки: str, которая содержит исходную строку, и delim, которая содержит разделители (пробел, табуляция, перевод строки, точка, запятая, вопросительный знак, восклицательный знак, двоеточие, точка с запятой и точка).
  2. Инициализируются две переменные: first и last. Обе они будут использоваться для отслеживания начала и конца текущего слова.
  3. Переменная sym инициализируется значением 1. Она будет использоваться для отслеживания текущего символа.
  4. В цикле for перебираются все символы в строке str.
  5. Внутри цикла проверяется, является ли текущий символ одним из разделителей. Если это так, то переменная sym устанавливается равной 0, что означает, что текущий символ не является началом слова.
  6. Если переменная sym равна 1, то это означает, что текущий символ является началом слова. Если переменная flag равна 0, то это первое слово в строке, и поэтому переменная first устанавливается равной str, а переменная flag устанавливается равным 1. Если переменная flag уже равна 1, то это означает, что текущее слово имеет пару двойных букв, и поэтому переменная db устанавливается равным 1.
  7. Если переменная sym равна 0, то это означает, что текущий символ является разделителем. Если переменная flag равна 1, то это означает, что текущее слово имеет пару двойных букв, и поэтому переменная db устанавливается равным 0.
  8. Если переменная sym равна 1 и переменная flag равна 0, то это означает, что текущий символ является последним символом слова. В этом случае переменная last устанавливается равным str - 1, переменная flag устанавливается равным 0, и если переменная db равна 1, то все символы слова выводятся на экран, начиная с first и заканчивая last, с помощью функции putchar.
  9. Если переменная sym равна 1 и переменная flag равна 1, то это означает, что текущий символ является вторым символом слова. В этом случае если текущий символ равен предыдущему символу, то переменная db устанавливается равным 1.
  10. Если переменная sym равна 1 и переменная db равна 1, то это означает, что текущее слово имеет пару двойных букв, и поэтому все символы слова выводятся на экран, начиная с first и заканчивая last, с помощью функции putchar.
  11. Если переменная sym равна 1 и переменная db равна 0, то это означает, что текущее слово не имеет пары двойных букв, и поэтому ничего не выводится на экран.
  12. Если переменная sym равна 0, то это означает, что текущий символ является разделителем, и поэтому ничего не выводится на экран.

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


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

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

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