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

Посчитать количество цифр целого неотрицательного числа n - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
maSt
 Аватар для maSt
5 / 5 / 1
Регистрация: 28.02.2010
Сообщений: 166
15.08.2012, 19:17     Посчитать количество цифр целого неотрицательного числа n #1
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
28
29
30
#include <iostream>
using namespace std;
 
int main()
{
  unsigned long int n = 0,m=0;
  cin >> n;
  if (n>10)
  {
      m++;
  while (n>10)
  {
      n = n/10;
      m++;
  }
  }
  else
  {
      if (n=0)
      {
          m = 0;
      }
      else
      {
      m = 1 ;
      }
  }
  cout << m << "\n";
  return 0;
}
Входные даные

Неотрицательное целое число n (0 ≤ n ≤ 2000000000).

Выходные даные

Количество цифр в числе n.
Вот такая программа, все делает правильно, но проходит только 7 тестов из 8. Не могу понять что еще можно проверять.Не подскажите, что не учтено?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2012, 19:17     Посчитать количество цифр целого неотрицательного числа n
Посмотрите здесь:

Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N C++
C++ В представлении десятичного целого числа в n -ой системе счисления (2<=n<=9) найти количество цифр
Классы. Как посчитать количество цифр в дробной части числа C++
C++ Составить, которая определяет количество цифр одного целого числа.
C++ Составить и использовать функцию, которая определяет количество цифр одного целого числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
15.08.2012, 19:52     Посчитать количество цифр целого неотрицательного числа n #2
Странный алгоритм. Можно было проще :
C++
1
2
3
4
5
6
7
if (!n)
++m;
while (n)
{
m++;
n /= 10;
}
Твоя ошибка в том, что ты :
C++
1
2
3
4
  if (n=0)
      {
          m = 0;
      }
считаешь нулем. 0 - цифра, так что тут должно выводить 1.
Более того. if (n==0), а не if(n=0). Второе - это присваивание и не сравнение

Добавлено через 29 минут
Что-то я сглупил. Первое моё можно переписать так :
C++
1
2
3
4
5
do
{
m++;
n /= 10;
} while(n);
maSt
 Аватар для maSt
5 / 5 / 1
Регистрация: 28.02.2010
Сообщений: 166
15.08.2012, 19:54  [ТС]     Посчитать количество цифр целого неотрицательного числа n #3
Может оно и проще, но после паскаля мне так понятнее
Спасибо за подсказку, но там ошибка другая , я 10 к цифрам приписал.
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
15.08.2012, 20:17     Посчитать количество цифр целого неотрицательного числа n #4
А можно сделать что-то вроде
C++
1
2
3
4
char a[11]; int b;
std::cin >> b;
itoa(b,a,10);
std::cout << strlen(a);
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
15.08.2012, 21:11     Посчитать количество цифр целого неотрицательного числа n #5
а можно еще проще
C++
1
2
3
string str;
cin>>str;
cout<<str.size();
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
15.08.2012, 22:05     Посчитать количество цифр целого неотрицательного числа n #6
а getchar() заюзать почему никто не предлагает??? По моему это будет самый простой вариант в этой ситуации
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.08.2012, 22:22     Посчитать количество цифр целого неотрицательного числа n #7
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
а getchar() заюзать почему никто не предлагает???

Не по теме:

ну да, человек пишет, например функцию, чтобы использовать с целочисленными переменными. Давайте ка, покажите в этом случае gertchar()


Через рекурсию:
C
1
2
3
4
int count(unsigned long a)
{
   return a < 10 ? 1 : 1 + count(a/10);
}
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
16.08.2012, 08:18     Посчитать количество цифр целого неотрицательного числа n #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
size_t digits_count(size_t number)
{
   return std::to_string(number).size();
}
 
int main()
{
   std::cout << digits_count(1) << std::endl;
   std::cout << digits_count(12) << std::endl;
   std::cout << digits_count(123) << std::endl;  
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.08.2012, 11:47     Посчитать количество цифр целого неотрицательного числа n #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cmath>
 
int digits_count(int value)
{
   return log10(abs(value)) + 1;
}
 
int main()
{
   std::cout << digits_count(1) << " " << digits_count(532) << " " << digits_count(-10000) << std::endl;
}
http://liveworkspace.org/code/456e4c...b7970c15911a2e
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
16.08.2012, 11:59     Посчитать количество цифр целого неотрицательного числа n #10
И special case нуля, а то от него логарифм не берётся.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2012, 12:08     Посчитать количество цифр целого неотрицательного числа n
Еще ссылки по теме:

C++ Подсчитать количество цифр целого десятичного числа
Получить двоичное строковое представление целого неотрицательного числа C++
Подсчитать количество цифр вводимого целого неотрицательного числа C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.08.2012, 12:08     Посчитать количество цифр целого неотрицательного числа n #11
~OhMyGodSoLong~, Ага, согласен.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
int digits_count(int value)
{
   return !value ? 1 : log10(abs(value)) + 1;
}
 
int main()
{
   std::cout << digits_count(1) << " " << digits_count(532) << " " << digits_count(-10000) << " " <<
      digits_count(0) << std::endl;
}
Yandex
Объявления
16.08.2012, 12:08     Посчитать количество цифр целого неотрицательного числа n
Ответ Создать тему
Опции темы

Текущее время: 13:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru