Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Glitch
9 / 9 / 4
Регистрация: 28.09.2015
Сообщений: 129
#1

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

27.09.2016, 12:56. Просмотров 277. Ответов 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;
}
Подскажите, как можно максимально упростить код
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2016, 12:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упростить программу, находящую количество нулей в числе (C++):

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

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

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

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах - C++
#include &lt;iostream&gt; #include&lt;conio.h&gt; main() { setlocale(LC_ALL, &quot;Russian&quot;); int N,digit = 0; int count = 0; std::...

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

Написать программу, подсчитывающую количество четных и нечетных цифр в числе - C++
Написать программу, подсчитывающую количество четных и нечетных цифр в числе. И если можно составьте Блок схемы. Заранее большое...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
27.09.2016, 13:31 #2
C++
1
2
3
4
5
while (num > 0)
{
    if (num % 10 == 0) ++zero;
    num /= 10;
}
GbaLog-
Любитель чаепитий
2703 / 1236 / 297
Регистрация: 24.08.2014
Сообщений: 4,434
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 13:37 #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
}
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 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;
}
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;
GbaLog-
Любитель чаепитий
2703 / 1236 / 297
Регистрация: 24.08.2014
Сообщений: 4,434
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 13:50 #6
Цитата Сообщение от Dsasdf Посмотреть сообщение
Зачем, инициализировать, чтобы потом снова инициализировать?
Потому что привычка у меня хорошая выработалась, инициализировать все переменные по-умолчанию, если не нужно как-то по-другому.
Цитата Сообщение от Dsasdf Посмотреть сообщение
Как ни зайду один ржачь.
Не умрите там от смеха.
Dsasdf
Заблокирован
27.09.2016, 13:57 #7
Цитата Сообщение от GbaLog- Посмотреть сообщение
Потому что привычка у меня хорошая выработалась, инициализировать все переменные по-умолчанию, если не нужно как-то по-другому.
Это не привычка, а {вырезано модератором}. Делать в трех строчках кода, где никто не сможет запутаться и забыть. Да, еще бы научился правильно инициализировать )). Но, учить не буду. Все удаляй посты, блочь, пиши два листа ответов ))).
stzer
92 / 68 / 20
Регистрация: 26.10.2013
Сообщений: 204
Завершенные тесты: 2
27.09.2016, 14:00 #8
Цитата Сообщение от Dsasdf Посмотреть сообщение
Но, учить не буду
Извините, не сдержался. А учить чему?
GbaLog-
Любитель чаепитий
2703 / 1236 / 297
Регистрация: 24.08.2014
Сообщений: 4,434
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 14:03 #9
Цитата Сообщение от Dsasdf Посмотреть сообщение
Делать в трех строчках кода, где никто не сможет запутаться и забыть.
Что делать? Инициализировать по-умолчанию?
Цитата Сообщение от Dsasdf Посмотреть сообщение
Да, еще бы научился правильно инициализировать )).
Я что-то не так делаю?
Цитата Сообщение от Dsasdf Посмотреть сообщение
Но, учить не буду .
А Вас кто-то станет слушать, если Вы станете учить?
Цитата Сообщение от Dsasdf Посмотреть сообщение
Это не привычка, а {вырезано модератором}.
Посмотрел бы я на Вас, когда Вы в дебаге будете 3 года сидеть и не понимать, почему у Вас получилось какое-то совершенно непонятное значение, а я буду чай в это время пить.
Glitch
9 / 9 / 4
Регистрация: 28.09.2015
Сообщений: 129
27.09.2016, 15:02  [ТС] #10
Ого, спасибо всем за помощь
_Ivana
3057 / 1744 / 151
Регистрация: 01.03.2013
Сообщений: 4,925
Записей в блоге: 2
27.09.2016, 22:38 #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
do r+=n%10==0; while(n/=10);
Glitch
9 / 9 / 4
Регистрация: 28.09.2015
Сообщений: 129
27.09.2016, 23:09  [ТС] #12
_Ivana, Спасибо, после такого очевидно простого решения, чувствую себя ещё тупее чем раньше
gru74ik
Модератор
Эксперт CЭксперт С++
4150 / 1776 / 197
Регистрация: 20.02.2013
Сообщений: 4,898
Записей в блоге: 21
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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2016, 13:39
Привет! Вот еще темы с ответами:

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

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

Упорядочить массив по убыванию количества нулей в числе - C++
3.Создать случайный массив размера n. Упорядочить его по убыванию количества нулей в числе

Подскажите как можно упростить присвоение числе переменным?! - C++
// 400.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.09.2016, 13:39
Ответ Создать тему
Опции темы

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