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

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

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

Как сделать проверку того, что слово имеет симметрично расположенные буквы Вот код
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
     const int BUFF_LEN = 80;
char buf[BUFF_LEN];
scanf("%s", buf, BUFF_LEN);
char sep [2]=" ";   
char *istr;
istr = strtok (buf, sep);
while (istr != NULL)
{
   
     istr = strtok (NULL,sep);
      printf("%s\n", istr);
      }

      getch();
}
Ввести строку, вывести на экран только слова с симметричным расположением букв., а вот задание

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main() {
    const int BUFF_LEN = 80; //объявляем буфер для строки
    char buf[BUFF_LEN];
    scanf("%[^\n]", buf, BUFF_LEN); // читаемм строку с клавиатуры
 
    int sym;
    char * p = buf, *e, *n, *b, t;
    for (;;) {
      for (;*p && *p == ' '; ++p); // пробелы перед словом
      if (!*p) break;
      for (n = p; *n && *n != ' '; ++n); // до конца слова
      e = n - 1;                 // последний символ слова
 
      // проверяем симетричность
      b = p;
      sym = 1;
      while (p < e && sym) (sym = (*p++ == *e--));
 
      if (sym) {
        t  = *n;   // добавляем '\0' чтобы можно было вывести
        *n = '\0';
        puts(b);   // выводим в консоль
        *n = t;    // возвращаем символ обратно
      }
      p = n;
    }
    return 0;
}

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

В этом коде используется язык программирования 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
Похожие ответы