Вывести слова с симметричным расположением букв - 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;
. Это делается для того, чтобы можно было продолжить обработку следующего слова.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д