Вывести слова с симметричным расположением букв - C (СИ)

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

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

Как сделать проверку того, что слово имеет симметрично расположенные буквы Вот код
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. int main(void)
  6. {
  7. const int BUFF_LEN = 80;
  8. char buf[BUFF_LEN];
  9. scanf("%s", buf, BUFF_LEN);
  10. char sep [2]=" ";
  11. char *istr;
  12. istr = strtok (buf, sep);
  13. while (istr != NULL)
  14. {
  15. istr = strtok (NULL,sep);
  16. printf("%s\n", istr);
  17. }
  18.  
  19. getch();
  20. }
Ввести строку, вывести на экран только слова с симметричным расположением букв., а вот задание

Решение задачи: «Вывести слова с симметричным расположением букв»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5.     const int BUFF_LEN = 80; //объявляем буфер для строки
  6.     char buf[BUFF_LEN];
  7.     scanf("%[^\n]", buf, BUFF_LEN); // читаемм строку с клавиатуры
  8.  
  9.     int sym;
  10.     char * p = buf, *e, *n, *b, t;
  11.     for (;;) {
  12.       for (;*p && *p == ' '; ++p); // пробелы перед словом
  13.       if (!*p) break;
  14.       for (n = p; *n && *n != ' '; ++n); // до конца слова
  15.       e = n - 1;                 // последний символ слова
  16.  
  17.       // проверяем симетричность
  18.       b = p;
  19.       sym = 1;
  20.       while (p < e && sym) (sym = (*p++ == *e--));
  21.  
  22.       if (sym) {
  23.         t  = *n;   // добавляем '\0' чтобы можно было вывести
  24.         *n = '\0';
  25.         puts(b);   // выводим в консоль
  26.         *n = t;    // возвращаем символ обратно
  27.       }
  28.       p = n;
  29.     }
  30.     return 0;
  31. }

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

В этом коде используется язык программирования C.

  1. Переменные:
    • buf - буфер для строки, объявлен как массив символов.
    • scanf - используется для чтения строки с клавиатуры.
    • sym - используется для проверки симметричности слова.
    • p - указатель на текущий символ в буфере.
    • e - указатель на последний символ в текущем слове.
    • n - указатель на последний символ в текущем слове.
    • b - указатель на начало текущего слова.
    • t - используется для хранения последнего символа слова.
  2. Цель программы: Цель программы - выводить слова с симметричным расположением букв.
  3. Описание работы программы:
    • Строка считывается с клавиатуры и сохраняется в буфере buf.
    • Затем программа начинает искать слова в буфере.
    • Пробелы перед словом пропускаются.
    • Переменная n указывает на последний символ текущего слова.
    • Переменная e указывает на последний символ слова, с которым сравнивается текущее слово.
    • Переменная b указывает на первый символ текущего слова.
    • Переменная sym используется для проверки симметричности слова.
    • Если слово симметрично, оно выводится в консоль.
    • После вывода слова указатель n возвращается обратно, чтобы можно было продолжить обработку следующего слова.
    • Если слово не симметрично, ничего не выводится.
    • Цикл продолжается до тех пор, пока все слова в буфере не будут обработаны.
  4. Обратите внимание на:
    • Переменная sym инициализируется как 1, а не как 0. Это делается для того, чтобы при первом проходе цикла while условие было истинным.
    • В строке while (p < e && sym) (sym = (*p++ == *e--)); используется постфиксная операция ++ и префиксная операция --. Это делается для того, чтобы p и e увеличивались и уменьшались на 1 одновременно.
    • Для добавления символа \0 в конец слова используется переменная t. Это делается для того, чтобы можно было корректно вывести слово в консоль.
    • Для возврата символа обратно используется оператор *n = t;. Это делается для того, чтобы можно было продолжить обработку следующего слова.

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


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

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

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы