Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Ace_400
1 / 1 / 0
Регистрация: 10.05.2017
Сообщений: 33
1

Найти ,сколько чисел меньших X (икс) имеют в своей десятичной записи только цифры 0 и 1 - C (СИ)

09.11.2017, 13:58. Просмотров 770. Ответов 4
Метки нет (Все метки)

Как написать эту программу без массивов и функций.Буду очень признателен, если поможете
На вход число X подается в никакой системе счисления
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2017, 13:58
Ответы с готовыми решениями:

Найти, сколько чисел меньших X имеют в своей десятичной записи только цифры 0 и 1
Помогите,мучаюсь 5 день.Найти ,сколько чисел меньших X (икс) имеют в своей десятичной записи только...

Найти те числа отрезка, которое в своей записи имеют только четные цифры
Дан натуральный отрезок чисел . Найти те числа этого отрезка, которые в своей записи имеют только...

Найти произведение тех чисел, которые не имеют в своей записи цифры 3
Вводятся 4х-значные числа. Найти произведение тех из них, которые не имеют к своей записи цифры 3.

Определить, сколько чисел последовательности содержит в своей записи все цифры больше некоторого числа N
помогите пожалуйста написать программу Процедуры и функции в паскаль: Дана последовательность К...

Найти среднее арифметическое тех чисел последовательности, которые имеют в своей записи цифру 3
Дана последовательность из n целых чисел. Найти среднее арифметическое тех чисел...

4
dmake
7 / 7 / 1
Регистрация: 07.11.2017
Сообщений: 86
09.11.2017, 19:00 2
Я новичок, но похоже на то:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main()
{
    int num;
    int count=1;
    printf ("enter your number\n");
    scanf ("%d", &num);
        for (num; num>0; num--){
            int x=num-1;
        while (x%10<=1){
            x/=10;
            if (x<=1) {
                count++;
               break;
            }
        }
}
        printf ("count of 10101010 is %d\n",count);
    return 0;
 
}
Надеюсь более опытные ребята оценят и внесут свои коррективы.

Добавлено через 56 минут
Вопрос по 13 строчке. Почему при написании x=1 программа начинает работать некорректно?
При этом если записать x<=0 результат получается корректный.
Логика в том, что пока остаток 1 или 0 - мы делим int на 10 и в конце мы приходим либо в 1, которая щелкает счетчик, и прерывает цикл While, начиная заново цикл for, но уже с меньшим на 1 числом, либо к >1, что также заканчивает While и переходит на num--.
1
Байт
Эксперт C
20327 / 12882 / 2698
Регистрация: 24.12.2010
Сообщений: 26,919
09.11.2017, 21:12 3
Лучший ответ Сообщение было отмечено Ace_400 как решение

Решение

Цитата Сообщение от Ace_400 Посмотреть сообщение
На вход число X подается в никакой системе счисления
Странные слова, но мы их пропустим мимо ушей.
Цитата Сообщение от dmake Посмотреть сообщение
Почему при написании x=1 программа начинает работать некорректно?
x=1 - это присваивание. А вы, наверное, хотели сравнить, да? x==1 - вот это сравнение.
По основному вашему алгоритму. Вы считаете числа, в записи которых ЕСТЬ 0 или 1. Т.е такие как 2314
А нужно - ТОЛЬКО 0 и 1.
Вообще, в вашем коде много нестыковок. Вы его проверяли?
Ваш код (хотя он и весьма неэффективен) мог бы выглядеть как-то так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main()
{
    int num;
    int count=0;
    printf ("enter your number\n");
    scanf ("%d", &num);
    for (num; num>0; num--){
            int x=num;
            while (x){
              if (x%10 > 1)  break;
              x/=10;
            }
            if (x==0) count++;
    }
    printf ("count of 10101010 is %d\n",count);
    return 0;
}
Не проверял. Если есть ошибки - исправьте сами.
Но где-то я встречал алгоритм поэффективнее...

Добавлено через 3 минуты
dmake, вполне возможно, я не учел некоторые хитрости вашего кода, и в его оценке был не прав. Работает? Считает правильно? - Очень хорошо!
А теперь я поищу нечто пооптимальнее... Ведь недавно было...

Добавлено через 2 минуты
dmake, вот эта задача один в один
Найти, сколько чисел меньших X имеют в своей десятичной записи только цифры 0 и 1
И там есть решение
Ну а то, что ТС дублирует темы и не понимает предложенных решений, это уже не наша беда
2
dmake
7 / 7 / 1
Регистрация: 07.11.2017
Сообщений: 86
09.11.2017, 21:37 4
Цитата Сообщение от Байт Посмотреть сообщение
dmake, вполне возможно, я не учел некоторые хитрости вашего кода, и в его оценке был не прав. Работает? Считает правильно? - Очень хорошо!
А теперь я поищу нечто пооптимальнее... Ведь недавно было...
Считает как пить дать. Сейчас еще перепроверил, оказалось, что действительно дело в сравнении. И int 1/10=0, поэтому и сравнивать нужно с 0.
Вся идея была в том, что любое число, состоящее не из единиц и нулей при делении на 10 рано или поздно даст остаток>1 (2%10=2, как раз узнал во время решения). А любое число состоящее из нулей и единиц будет иметь остаток 1 или 0, сокращать знаки и в конце концов даст 1, которая при делении даст 0.
Тему посмотрел - в принципе всё понятно, кроме рекурсии и return 1;. До этого я пока не доходил.
По поводу комментария - огромное спасибо, прощупал в чем разница между = и ==. До этого не понимал.
1
Байт
Эксперт C
20327 / 12882 / 2698
Регистрация: 24.12.2010
Сообщений: 26,919
09.11.2017, 22:09 5
dmake, ну что ж, я очень рад за вас. Хоть ваш подход к решению и не стандартен, тем он и интересен. И то, что вы меня слегка запутали - очко в вашу пользу
Удачи!
0
09.11.2017, 22:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2017, 22:09

Найти количество тех чисел отрезка [A, B], которые в своей записи имеют две девятки
Дан натуральный отрезок чисел . Найти количество тех чисел этого отрезка, которые в своей записи...

Найти среднее арифметическое тех чисел последовательности, которые имеют в своей записи цифру три
Дана последовательность из n целых чисел. Найти среднее арифметическое тех чисел...

Найти сколько чисел на отрезке [x;y] начинаются с цифры 8 в шестнадцатеричной записи
Написать программу метками. Найти сколько чисел на отрезке начинаются с цифры 8 в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru