Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/511: Рейтинг темы: голосов - 511, средняя оценка - 4.82
Alex12345647

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

03.11.2011, 10:32. Показов 106882. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите не могу никак разобратся!
нужно сщздать прогу.
Пользователь вводит с клавиатуры число - программа должна показать сколько в данном числе цифр. Число вводится целиком в одну переменную.

скрины здесь [SPOILER]
 Комментарий модератора 
Спамеры и рекламщики здесь не задерживаются... Еще одна такая выходка и Вы отправитесь в бан.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2011, 10:32
Ответы с готовыми решениями:

Посчитать количество четных и нечетных цифр в числе
Дано натуральное число N . С помощью операций деления нацело и взятия остатка от деления посчитать количество четных и нечетных цифр в...

Вывести количество цифр в числе и сумму этих цифр
Натуральное число A, А<100, написать программу которая выводит количество цифр в этом числе и сумму этих цифр

Определить количество цифр в числе
Определить количество цифр в числе

39
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
03.11.2011, 11:01
что то не нашел я скрины!
Если пользователь вводит число в TextBox, то так
C#
1
int Kolichestvo_cifr = textbox1.Text.Length;
0
 Аватар для Ereona
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
03.11.2011, 12:03
C#
1
number.ToString().Length
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.11.2011, 13:39
Лучший ответ Сообщение было отмечено как решение

Решение

C#
1
2
int n = 123456789;
int digitCount = (int)Math.Log10(n) + 1;
Никогда, ни в коем случае не работайте с числами через конвертирование их в строку.
14
32 / 32 / 9
Регистрация: 02.09.2009
Сообщений: 64
03.11.2011, 14:12
Цитата Сообщение от kolorotur Посмотреть сообщение
Никогда, ни в коем случае не работайте с числами через конвертирование их в строку.
Не могли бы пояснить в двух словах, почему?
0
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
03.11.2011, 15:35
Цитата Сообщение от nfsk_hedgehog Посмотреть сообщение
Не могли бы пояснить в двух словах, почему?
Дико медленно.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.11.2011, 19:08
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

nfsk_hedgehog, во-первых, как вам сказали выше - это медленно.
Во-вторых, чисто технически глупо забивать кучу для тривиальных задач.
В-третьих, если это задание в школе или универе, то преподаватель наверняка хочет увидеть ваше умение работать с числами, а не строками.

А теперь самое главное. Строка - это отображение числа. А у отображения есть такое свойство, как формат. Который может быть разным в разных культурах (см. региональные настройки).
Например, число один миллион в некоторых культурах отображается как "1,000,000". В нем 7 чисел, но в строке, его отображающей, девять символов. В результате программа работает не правильно.
Будет весело, если вы разрабатываете какое-нибудь приложение для работы с финансами, напримнр.
3
03.11.2011, 19:27

Не по теме:

фанатизм какой то О_о имхо ToString().Length намного яснее и локаничнее, конечно если речь идет о каких то диких мат. вычеслениях с матрицами 100500х100500 стоит обращать на такие вещи внимание, а если это просто банальная необходимость узнать длину одного числа... int.ToString() всегда только цифры возвращает ну кроме случаев NaN

0
03.11.2011, 21:54

Не по теме:

Цитата Сообщение от WonderFlik Посмотреть сообщение
фанатизм какой то
Нет, это следование стандартам написания качественного кода.
В противном случае рождаются перлы типа "if (IsDisposed.ToString().Length == 4) { }"

Цитата Сообщение от WonderFlik Посмотреть сообщение
int.ToString() всегда только цифры возвращает
А если число негативное?

Цитата Сообщение от WonderFlik Посмотреть сообщение
кроме случаев NaN
Ок, как быть в случае NaN?

0
04.11.2011, 11:02

Не по теме:

наверное также как брать логарифм от отрицательных чисел от nan infinity, да еще плюс ко всему 0

0
04.11.2011, 11:37

Не по теме:

Согласен - нужны проверки. А раз число нужно проверять, то тем более нет смысла вдруг ни с того ни с сего гнать его в строку. Раз начали работать с числом, то и продолжаем работать с ним же.

0
04.11.2011, 12:37

Не по теме:

по-моему очевидно же, что в использовании ToString() в данном случае - минусов больше, чем плюсов. число - это число, строка - это строка. зачем еще выделять память в куче для такого рода задачи? лучше сразу правильно учиться программировать, имхо

0
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
11.11.2011, 23:27
Как вариант,
в случае с дотошным преподом, чтоб не доставал потом вопросами про логарифм, предлагаю в цикле делить число на 10 пока не получиться ноль

C#
1
2
3
4
5
6
7
int number2 = number;
int digits = 0; // кол-во цифр
while (number2 > 0)
{
  digits++;
  number = (int)(number/10);
}
Извините, в студии не проверил.

А на счет string полностью согласен с kolorotur! Да и региональные стандарты типа 1'000'000 вещь коварная.
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 7
31.03.2013, 14:11
А как быть с числом, к примеру, "000110101"? Не один из предложенных вариантов программы не работает и будет говорить, что цифр 6, т.к. первые три цифры нули.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
31.03.2013, 15:46
Цитата Сообщение от KrugerZzZ Посмотреть сообщение
А как быть с числом, к примеру, "000110101"?
Если считать впереди идущие нули, то длина любого числа априори равняется бесконечности, потому все еще проще.
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
31.03.2013, 16:36
Цитата Сообщение от WonderFlik Посмотреть сообщение
фанатизм какой то О_о имхо ToString().Length намного яснее и локаничнее,
Вспомнился один пример из интересной статьи )
http://lurkmore.to/%D0%98%D0%B... 0%BE%D0%B4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool value;
 
…
 
if (value.ToString().Length == 4)
{ 
  ...
}
else if (value.ToString().Length == 5)
{
  ...
}
else
{
   // внимание! кто-то хочет нас обмануть подсунув некачественный (по всей вероятности, протухший) bool, но мы ему не дадим:
   throw new ArgumentException();
   // у некоторых племенных индусов бывает и продолжение, на случай если throw вдруг не сработает:
   return !true && !false;
   // надо же вернуть какую-нибудь чепуху , чтобы заказчик не ныл
}
0
31.03.2013, 20:10

Не по теме:

Цитата Сообщение от Vitall Посмотреть сообщение
C#
1
// внимание! кто-то хочет нас обмануть подсунув некачественный (по всей вероятности, протухший) bool
Автор комментария абсолютно не разбирается в предмете.
Блок else там нужен для многоязыковой поддержки: в русской локали true.ToString() возвращает "внатуре".

1
38 / 40 / 6
Регистрация: 10.11.2011
Сообщений: 70
01.04.2013, 10:28
если "000110101" число (как сказано в задании), а не строка, тогда оно равно 110101. Так что мой алгоритм с делением на 10 должен решать проблему
0
17 / 17 / 4
Регистрация: 06.07.2012
Сообщений: 510
26.06.2014, 18:16
Одно из заданий ЕГЭ по информатике (а именно B8) построено на определении количества символов в строке.
Эта проблема решается в этих заданиях так:
C#
1
2
3
4
5
6
7
int x, counter;
...
while (x>0)
{
   x=x/10;
   counter++;
}
Также этот вариант был предложен SergiiK.
Так как x объявлен как int, то в результате деления int на 10, остаток от деления будет отсекаться (т. е. при x=56, после x=x/10, x будет = 5, а counter будет равен 1, затем, после деления x=5 на 10, x будет равен 0, а counter будет равен 2.

Пример программы:
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
using System;
 
 
class Example2 
{
    static void Main()
    {
        Console.Write("Введите число: ");
        string str = Console.ReadLine();
 
        int x = Convert.ToInt32(str);
 
        int counter = 0;
 
        while (x>0)
        {
            counter++;
            x = x / 10;
        }
 
        Console.WriteLine("Данное число содержит цифр: " + counter);
 
    }
 
}
0
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 11
27.06.2014, 01:15
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
class Program
{
    static void Main(string[] args)
    {
        Chislo chislo = new Chislo();
        chislo.Metod();
    }
}
class Chislo
{
    string i;
    int kolvo;
 
    public void Metod()
    {
        Console.Write("Введите число: ");
        i=Console.ReadLine();
        int a=0;
     
        while(a<=i.Length)  
        {
                kolvo= a++;
        }
        Console.WriteLine("Количество цифр {0}",kolvo);
        Console.ReadKey();
    }
}
Мне кажется самый нормальный вариант, ещё можно трай кэч поставить, чтобы буквы не вводили!!! Так как он и буквы считает!!!

Добавлено через 28 минут
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
31
32
33
34
35
class Program
{
    static void Main(string[] args)
    {
        Chislo chislo = new Chislo();
        chislo.Metod();
    }
}
class Chislo
{
    string i;
    int kolvo;
    public void Metod()
    {
        stop: Console.WriteLine("Вводить можно только числа!!!");
        Console.Write("Введите число: ");
        i = Console.ReadLine();
        try
        {
            int b = int.Parse(i);
        }
        catch
        {            
            goto stop;
        }        
        int a = 0;
        while (a <= i.Length)
        {
            kolvo = a++;
        }
        Console.WriteLine("Количество цифр {0}", kolvo);    
        Console.ReadKey();
    }
 
}
Немного исправил. Ну кому не так, доведите до ума. Я только 2-е недели программирование учу))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2014, 01:15
Помогаю со студенческими работами здесь

Определить количество цифр в числе
Дано число К. Определить количество цифр в числе.

Количество нечетных цифр в числе
В чем здесь может быть ошибка? Основная программа: Console.WriteLine(&quot;Введите число&quot;); number =...

Определить количество цифр в числе
Определить количество цифр в числе ... Например: вводишь 7890 программа выводит 4 (если можно через цикл) помогите...

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

Определить количество цифр в целом числе
Дано целое десятичное число N. Нужно определить количество цифр в нём. Начальные данные: целое число N от 0 до 123456789123456789....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru