Проверка, все ли слова в строке имеют чередующуюся четную и нечетную длину - C (СИ)

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

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

Нужно разработать функцию, выполняющую заданную ниже операцию над данными типа char. Проверка, все ли слова в строке имеют чередующуюся четную и нечетную длину.

Решение задачи: «Проверка, все ли слова в строке имеют чередующуюся четную и нечетную длину»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#define  is_delim(c)  (isspace((c)) || ispunct((c)))
#define  N_EVEN  1
#define  N_ODD   2
 
 
int is_altern(const char* s){
    const char* p;
    int j, n = 0, i = 0, r = (*s != '\0');
 
    for(; *s; s = p){
        while(is_delim(*s))
            ++s;
 
        for(p = s; *p && !is_delim(*p); ++p)
            ;
 
        if((j = (int)(p - s)) > 0){
            if(j & 1)
                i = N_ODD;
            else
                i = N_EVEN;
 
            if(i != n)
                n = i;
            else {
                r = 0;
                break;
            }
        }
    }
    return r;
}
 
 
int main(void){
    puts( is_altern("lisp, apl, pascal.") ? "yes" : "no");
    puts( is_altern("titan moon (venus)") ? "yes" : "no");  
    puts( is_altern("Forth Java Prolog")  ? "yes" : "no");
    return 0;
}

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

В этом коде проверка на чётное и нечётное количество букв в каждом слове строки. Если все слова удовлетворяют этому условию, выводится yes, иначе — no. Каждое вводимое слово принимается за начало нового слова, пока не встретится новое слово или конец строки. Для этого используется функция is_altern, которая принимает два аргумента: первое — это указатель на начало строки, а второе — указатель на текущий символ в строке. Функция is_delim используется для определения, является ли текущий символ разделителем. Она возвращает ненулевой результат, если текущий символ является пробелом, знаками препинания или цифрой. Используются также две константы: N_EVEN — «чётное», N_ODD — «нечётное».

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


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

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

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