Где правильно поместить инкремент - C (СИ)
Формулировка задачи:
Задача была сократить запись этой функции
мой вариант:
в ответах инкремент в операторе if:
Вопрос есть ли ли в данном случае разница где стоит инкремент?
int count_spaces(const char *s) { int count = 0; for (; *s != '\0'; s++) if (*s == ' ') count++; return count; }
while (*s++){ if (*s == ' ') count++; }
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
отделено пробелом.
Код работает следующим образом:
- Если
s
не равноNULL
(то есть строка не пустая), то функция рекурсивно вызывает саму себя, увеличивая значениеs
на 1 (чтобы перейти к следующему символу в строке) и увеличиваяn
на 1, если текущий символ равен пробелу (чтобы учесть текущее слово). - Если
s
равноNULL
(то есть строка закончилась), то функция возвращает значениеn
(количество слов в строке). Вот список, описывающий работу функции: - Если
s
не равноNULL
, то:- Увеличить
s
на 1. - Вызвать функцию
Count
с аргументамиs
иn + (*s == L' ')
. - Вернуть результат вызова функции
Count
.
- Увеличить
- Если
s
равноNULL
, то:- Вернуть значение
n
.
- Вернуть значение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д