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