Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/75: Рейтинг темы: голосов - 75, средняя оценка - 4.97
 Аватар для maSt
5 / 5 / 3
Регистрация: 28.02.2010
Сообщений: 166

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

15.08.2012, 19:17. Показов 15338. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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. Не могу понять что еще можно проверять.Не подскажите, что не учтено?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.08.2012, 19:17
Ответы с готовыми решениями:

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

Подсчитать количество цифр в десятичной записи целого неотрицательного числа
Подсчитать количество цифр в десятичной записи целого неотрицательного числа n.

Написать функцию , возвращающую сумму цифр целого неотрицательного числа.
Помогите пожалуйста! Написать функцию sumDigit, возвращающую сумму цифр целого неотрицательного числа. В функции main...

10
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
15.08.2012, 19:52
Странный алгоритм. Можно было проще :
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);
1
 Аватар для maSt
5 / 5 / 3
Регистрация: 28.02.2010
Сообщений: 166
15.08.2012, 19:54  [ТС]
Может оно и проще, но после паскаля мне так понятнее
Спасибо за подсказку, но там ошибка другая , я 10 к цифрам приписал.
0
25 / 25 / 11
Регистрация: 02.01.2012
Сообщений: 371
15.08.2012, 20:17
А можно сделать что-то вроде
C++
1
2
3
4
char a[11]; int b;
std::cin >> b;
itoa(b,a,10);
std::cout << strlen(a);
0
92 / 88 / 17
Регистрация: 13.11.2011
Сообщений: 193
15.08.2012, 21:11
а можно еще проще
C++
1
2
3
string str;
cin>>str;
cout<<str.size();
0
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
15.08.2012, 22:05
а getchar() заюзать почему никто не предлагает??? По моему это будет самый простой вариант в этой ситуации
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.08.2012, 22:22
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
а getchar() заюзать почему никто не предлагает???

Не по теме:

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


Через рекурсию:
C
1
2
3
4
int count(unsigned long a)
{
   return a < 10 ? 1 : 1 + count(a/10);
}
0
 Аватар для Пaтрик
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 976
16.08.2012, 08:18
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;  
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.08.2012, 11:47
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/... 0c15911a2e
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
16.08.2012, 11:59
И special case нуля, а то от него логарифм не берётся.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.08.2012, 12:08
~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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2012, 12:08
Помогаю со студенческими работами здесь

Циклы: вычисление факториала неотрицательного целого числа
Дано натуральное число n. Написать программу, которая вычисляет факториал неотрицательных целых чисел n (т.е. число целое и больше 0)....

посчитать и вывести на экран количество целого и десятичного числа
Помогите пожалуйста с заданием Посчитать и вывести на экран количество целого и десятичного числа

Получить двоичное строковое представление целого неотрицательного числа
Помогите пожалуйста с программой, очень надо. Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление...

Описать функцию, возвращающую строковое представление целого неотрицательного числа
Описать функцию DecToHex(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N в 16-ричной системе...

Подсчитать количество цифр целого десятичного числа
Подсчитать количество цифр целого десятичного числа. Результат сохранить в файл «1.txt». Найти все четные цифры целого десятичного числа....


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru