Где правильно поместить инкремент - C (СИ)

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

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

Задача была сократить запись этой функции
int count_spaces(const char *s)
{
    int count = 0;
    
    for (; *s != '\0'; s++)
        if (*s == ' ')
            count++;
    return count;
}
мой вариант:
    while (*s++){
        if (*s == ' ')
            count++;
    }
в ответах инкремент в операторе if:
    while (*s){
        if (*s++ == ' ')
            count++;
    }
Вопрос есть ли ли в данном случае разница где стоит инкремент?

Решение задачи: «Где правильно поместить инкремент»

textual
Листинг программы
int Count( const TCHAR * s, int n )
{
    return *s ? Count( ++s, n + (*s == L' ') ) : n;
}

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

В данном коде реализована функция Count, которая принимает два аргумента: строку s и число n. Функция считает количество слов в строке s. Каждое слово в строке s отделено пробелом. Код работает следующим образом:

  1. Если s не равно NULL (то есть строка не пустая), то функция рекурсивно вызывает саму себя, увеличивая значение s на 1 (чтобы перейти к следующему символу в строке) и увеличивая n на 1, если текущий символ равен пробелу (чтобы учесть текущее слово).
  2. Если s равно NULL (то есть строка закончилась), то функция возвращает значение n (количество слов в строке). Вот список, описывающий работу функции:
  3. Если s не равно NULL, то:
    • Увеличить s на 1.
    • Вызвать функцию Count с аргументами s и n + (*s == L' ').
    • Вернуть результат вызова функции Count.
  4. Если s равно NULL, то:
    • Вернуть значение n.

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


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

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

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