Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Glitch
9 / 9 / 5
Регистрация: 28.09.2015
Сообщений: 139
1

Упростить программу, находящую количество нулей в числе

27.09.2016, 12:56. Просмотров 1058. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL, "rus");
 
    int num;
    int zero = 0;
    int count = 0;
 
    cout << "Введите число: ";
    cin >> num;
 
    for (int i = 10; count < (int)ceil(log10(abs(num))); i *= 10)
    {
        count++;
        if ((num % i / (i / 10)) == 0)
        {
            zero++;
        }
    }
    cout << zero << endl;
 
    return 0;
}
Подскажите, как можно максимально упростить код
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2016, 12:56
Ответы с готовыми решениями:

Посчитать количество нулей в числе
⦁ Пользователь вводит число. Определить количество цифр в этом числе, посчитать...

нужно написать программу, находящую количество чисел меньших x, которые делятся в точности на три простых числа.
Мне нужно написать программу, находящую количество чисел меньших x, которые...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах
Дано натуральное число N (N &gt; 9). Определить количество нулей в цифровой записи...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах
#include &lt;iostream&gt; #include&lt;conio.h&gt; main() { setlocale(LC_ALL,...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах (Pascal -> С++)
Var i: longint; N: integer; begin write('input Nomber, pleeeaaase: ');...

12
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
27.09.2016, 13:31 2
C++
1
2
3
4
5
while (num > 0)
{
    if (num % 10 == 0) ++zero;
    num /= 10;
}
1
GbaLog-
Любитель чаепитий
3165 / 1471 / 465
Регистрация: 24.08.2014
Сообщений: 5,204
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 13:37 3
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/////////////////////////////////////////////////////////////////////
#include <string>
#include <algorithm>
#include <iostream>
/////////////////////////////////////////////////////////////////////
int main()
{
    int n{};
    std::cin >> n;
    std::string tmp{ std::to_string( n ) };
    
    std::cout 
        << std::count( tmp.cbegin(), tmp.cend(), '0' ) 
        << std::endl;
}
1
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,008
Завершенные тесты: 2
27.09.2016, 13:41 4
C++
1
2
3
4
5
6
7
unsigned getZerosAmount(unsigned value){
    unsigned result=value%10==0;
    while (value/=10){
        result+=value%10==0;
    }
    return result;
}
2
Dsasdf
Заблокирован
27.09.2016, 13:48 5
Цитата Сообщение от GbaLog- Посмотреть сообщение
C++
1
2
int n{};
std::cin >> n;
Зачем, инициализировать, чтобы потом снова инициализировать?. Как ни зайду один ржачь.

Господа все намного проще:
C++
1
2
3
4
5
6
  int count = 0, t;
    cin>>t;
    do
        if (t % 10 == 0)count++;
        while (t /= 10);
    cout << count;
1
GbaLog-
Любитель чаепитий
3165 / 1471 / 465
Регистрация: 24.08.2014
Сообщений: 5,204
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 13:50 6
Цитата Сообщение от Dsasdf Посмотреть сообщение
Зачем, инициализировать, чтобы потом снова инициализировать?
Потому что привычка у меня хорошая выработалась, инициализировать все переменные по-умолчанию, если не нужно как-то по-другому.
Цитата Сообщение от Dsasdf Посмотреть сообщение
Как ни зайду один ржачь.
Не умрите там от смеха.
0
Dsasdf
Заблокирован
27.09.2016, 13:57 7
Цитата Сообщение от GbaLog- Посмотреть сообщение
Потому что привычка у меня хорошая выработалась, инициализировать все переменные по-умолчанию, если не нужно как-то по-другому.
Это не привычка, а {вырезано модератором}. Делать в трех строчках кода, где никто не сможет запутаться и забыть. Да, еще бы научился правильно инициализировать )). Но, учить не буду. Все удаляй посты, блочь, пиши два листа ответов ))).
0
stzer
111 / 87 / 54
Регистрация: 26.10.2013
Сообщений: 273
Завершенные тесты: 2
27.09.2016, 14:00 8
Цитата Сообщение от Dsasdf Посмотреть сообщение
Но, учить не буду
Извините, не сдержался. А учить чему?
0
GbaLog-
Любитель чаепитий
3165 / 1471 / 465
Регистрация: 24.08.2014
Сообщений: 5,204
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 14:03 9
Цитата Сообщение от Dsasdf Посмотреть сообщение
Делать в трех строчках кода, где никто не сможет запутаться и забыть.
Что делать? Инициализировать по-умолчанию?
Цитата Сообщение от Dsasdf Посмотреть сообщение
Да, еще бы научился правильно инициализировать )).
Я что-то не так делаю?
Цитата Сообщение от Dsasdf Посмотреть сообщение
Но, учить не буду .
А Вас кто-то станет слушать, если Вы станете учить?
Цитата Сообщение от Dsasdf Посмотреть сообщение
Это не привычка, а {вырезано модератором}.
Посмотрел бы я на Вас, когда Вы в дебаге будете 3 года сидеть и не понимать, почему у Вас получилось какое-то совершенно непонятное значение, а я буду чай в это время пить.
0
Glitch
9 / 9 / 5
Регистрация: 28.09.2015
Сообщений: 139
27.09.2016, 15:02  [ТС] 10
Ого, спасибо всем за помощь
0
_Ivana
3233 / 1861 / 234
Регистрация: 01.03.2013
Сообщений: 5,091
Записей в блоге: 5
27.09.2016, 22:38 11
Лучший ответ Сообщение было отмечено Glitch как решение

Решение

C++
1
do r+=n%10==0; while(n/=10);
1
Glitch
9 / 9 / 5
Регистрация: 28.09.2015
Сообщений: 139
27.09.2016, 23:09  [ТС] 12
_Ivana, Спасибо, после такого очевидно простого решения, чувствую себя ещё тупее чем раньше
0
sourcerer
Модератор
Эксперт CЭксперт С++
4862 / 2043 / 325
Регистрация: 20.02.2013
Сообщений: 5,539
Записей в блоге: 24
Завершенные тесты: 1
29.09.2016, 13:39 13
Цитата Сообщение от Dsasdf Посмотреть сообщение
Это не привычка, а {вырезано модератором}. Делать в трех строчках кода, где никто не сможет запутаться и забыть
Как-то Стенли Липпману доверия больше, чем Вам:
Цитата Сообщение от Stanley Lippman
We recommend initializing every object of built-in type. It is not always
necessary, but it is easier and safer to provide an initializer until you can
be certain it is safe to omit the initializer.
2
29.09.2016, 13:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2016, 13:39

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

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

Написать программу, которая вычисляет количество цифр во введенном пользователем числе
Ваще не как... надо самы простой способ


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

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

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