Member 14972409 Ответов: 3

Как сделать функцию, удовлетворяющую этому правилу?


Поэтому я хочу создать функцию, которая получает число(положительное целое число) и возвращает 1 или 0. Правила таковы: это нормально иметь 0 в числе, но если число содержит два или более 0 впоследствии, то оно не удовлетворяет правилам. Кроме того, если 0 находятся в конце числа, то это не удовлетворяет правилу. Если правила выполняются, функция возвращает 1, а если правила не выполняются, она возвращает 0. Например, 12580302, 145829, 1040203 должна возвращать 1, а 123441, 1240012, 124040012, 124450 должна возвращать 0.

Что я уже пробовал:

Я понятия не имею, как решить эту проблему, поэтому я еще ничего не пробовал:(

3 Ответов

Рейтинг:
23

Richard MacCutchan

Первое, что нужно сделать, это решить, как вы собираетесь анализировать число. Один из самых простых способов-использовать операторы модуля и деления для извлечения остатка при делении на 10. Таким образом, вы можете подсчитать количество нулевых остатков, число в конце и число последовательных единиц. Поэтому посмотрите документацию по операторам модуля и деления и подумайте о том, как вы могли бы это сделать. Запись шагов на бумаге часто делает вещи более ясными.


Рейтинг:
1

OriginalGriff

Если вы не знаете, как что-то сделать, попробуйте сначала сделать это вручную.
Так что возьмите номер: 1240012 и подумайте о том, как бы вы узнали, что функция должна возвращать 0 или 1.

Просто: вы смотрите на число, отбрасываете все конечные нули, а затем ищете нули в том, что осталось. Когда вы находите одну, вы смотрите на следующую цифру.
Если это также Ноль, вы возвращаете 0.
Если это не так, помните, что вы нашли один, и продолжайте искать нули.
Когда Вы дойдете до конца числа, вы проверяете, нашли ли вы вообще какие-либо нули, и если да, то возвращаете 1. В противном случае верните 0.

Это довольно просто, не так ли? Итак, теперь начните думать о том, как реализовать это в функции. Взгляните сюда: если у вас вообще возникли проблемы с началом работы, то это может помочь: Как написать код для решения проблемы, руководство для начинающих[^] и помните, что в C вы можете извлечь наименее значимую цифру с помощью оператора модуля и переместить все остальные цифры в целое число "вниз на одно место" с помощью оператора деления.

Попробуйте - это довольно легко, если вы подумаете об этом в течение нескольких минут.


Рейтинг:
1

CPallini

Альтернативный подход: преобразуйте число в строку, а затем выполните поиск подстроки "00" в нем (подсказка: есть стандартные C функции для таких задач), если подстрока не найдена, то вам просто нужно проверить наличие трейлинга '0' для того, чтобы проверить номер.