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

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

27.09.2016, 12:56. Просмотров 526. Ответов 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;
}
Подскажите, как можно максимально упростить код
http://www.cyberforum.ru/cpp-beginners/thread1877105.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2016, 12:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Упростить программу, находящую количество нулей в числе (C++):

нужно написать программу, находящую количество чисел меньших 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
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
27.09.2016, 13:31 #2
C++
1
2
3
4
5
while (num > 0)
{
    if (num % 10 == 0) ++zero;
    num /= 10;
}
1
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,179
Записей в блоге: 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 / 275
Регистрация: 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-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,179
Записей в блоге: 1
Завершенные тесты: 2
27.09.2016, 13:50 #6
Цитата Сообщение от Dsasdf Посмотреть сообщение
Зачем, инициализировать, чтобы потом снова инициализировать?
Потому что привычка у меня хорошая выработалась, инициализировать все переменные по-умолчанию, если не нужно как-то по-другому.
Цитата Сообщение от Dsasdf Посмотреть сообщение
Как ни зайду один ржачь.
Не умрите там от смеха.
0
Dsasdf
Заблокирован
27.09.2016, 13:57 #7
Цитата Сообщение от GbaLog- Посмотреть сообщение
Потому что привычка у меня хорошая выработалась, инициализировать все переменные по-умолчанию, если не нужно как-то по-другому.
Это не привычка, а {вырезано модератором}. Делать в трех строчках кода, где никто не сможет запутаться и забыть. Да, еще бы научился правильно инициализировать )). Но, учить не буду. Все удаляй посты, блочь, пиши два листа ответов ))).
0
stzer
111 / 87 / 53
Регистрация: 26.10.2013
Сообщений: 270
Завершенные тесты: 2
27.09.2016, 14:00 #8
Цитата Сообщение от Dsasdf Посмотреть сообщение
Но, учить не буду
Извините, не сдержался. А учить чему?
0
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,179
Записей в блоге: 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
3232 / 1860 / 235
Регистрация: 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
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,224
Записей в блоге: 23
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
Привет! Вот еще темы с решениями:

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

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

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

Подскажите как можно упростить присвоение числе переменным?!
// 400.cpp: определяет точку входа для консольного приложения. // #include...


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

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

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