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

Определение количества разрядов у числа - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
28.07.2013, 14:37     Определение количества разрядов у числа #1
Написал программку, которая должна определять количество разрядов у чисел. При вводе двухзначных и трехзначных, программа правильно определяет разряд, но при вводе четырехзначных чисел и более, начинает определять неправильно. Помогите определить проблему.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std ;
int main()
{
    int dvoich, chislo,razryd = 0, del = 1;
    cout << "Enter 2-oe chislo: " ;
    cin >> dvoich ;
    chislo = dvoich ;
    while (chislo > 9)
    {
        chislo = chislo / del ;
        razryd++ ;
        del *= 10 ;
    }
    cout << razryd << endl ;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 14:37     Определение количества разрядов у числа
Посмотрите здесь:

C++ Посчитать m последних разрядов числа n
определение количества разрядов числа через функцию C++
Массивы. Определение максимального целого числа из произвольного количества введенных значений C++
Проверить, как изменилось количество разрядов в числе M по сравнению с количеством разрядов числа N C++
C++ Определить значение двух последних разрядов двоичного числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
28.07.2013, 14:47     Определение количества разрядов у числа #2
Цитата Сообщение от mikhail90 Посмотреть сообщение
Написал программку, которая должна определять количество разрядов у чисел. При вводе двухзначных и трехзначных, программа правильно определяет разряд, но при вводе четырехзначных чисел и более, начинает определять неправильно. Помогите определить проблему.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std ;
int main()
{
    int dvoich, chislo,razryd = 1;
    cout << "Enter 2-oe chislo: " ;
    cin >> dvoich ;
    chislo = dvoich ;
    while (chislo > 9)
    {
        chislo /= 10 ;
        razryd++ ;  
    }
    cout << razryd << endl ;
    return 0;
}
так должно работать
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
28.07.2013, 14:59     Определение количества разрядов у числа #3
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>
#include <Windows.h>
#include <iomanip>
#include <string>
#include <cctype>
#include <sstream>
 
 
using namespace std;
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 stringstream ss;
 int counter = 0, vvod = 0;
 char str[9];
 cout << "Введите число - ";
 cin >> vvod;
 ss << vvod;
 ss >> str;
 for(int i = 0; i < strlen(str); i++)
 {
     counter++;
 }
 cout << counter << " разрядов." << endl;
 
cout << "\n";
system("PAUSE");
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:11     Определение количества разрядов у числа #4
Цитата Сообщение от Bend3r Посмотреть сообщение
for(int i = 0; i < strlen(str); i++)
{
counter++;
}
Это для чего? strlen(str) недостаточно?
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
28.07.2013, 15:14     Определение количества разрядов у числа #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Это для чего? strlen(str) недостаточно?
Достаточно, просто поздно об этом подумал.
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:17     Определение количества разрядов у числа #6
C++
1
2
3
4
5
6
7
int main()
{
    int i;
    cin>>i;
    cout<<((int)log10(i)+1);
    
}
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
28.07.2013, 15:22     Определение количества разрядов у числа #7
Цитата Сообщение от Хулиган Посмотреть сообщение
C++
1
2
3
4
5
6
7
int main()
{
    int i;
    cin>>i;
    cout<<((int)log10(i)+1);
    
}
log10 от int числа, не работает. Возможно вы имели ввиду:
C++
1
2
3
4
int i;
 cin>>i;
 double z = i;
 cout<<(int)(log10(z)+1);
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:28     Определение количества разрядов у числа #8
Цитата Сообщение от Bend3r Посмотреть сообщение
log10 от int числа, не работает
C++
1
cout<<(int)log10((double)i)+1;
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:30     Определение количества разрядов у числа #9
Цитата Сообщение от Bend3r Посмотреть сообщение
log10 от int числа, не работает
а что неявное преобразование типов отменили?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
28.07.2013, 15:33     Определение количества разрядов у числа #10
Хулиган, в MSVS 2012 все нормально работает.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:34     Определение количества разрядов у числа #11
Цитата Сообщение от Хулиган Посмотреть сообщение
а что неявное преобразование типов отменили?
Неявное тут не работает.
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:35     Определение количества разрядов у числа #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Неявное тут не работает
а у меня сработало(( почему так?
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
28.07.2013, 15:36  [ТС]     Определение количества разрядов у числа #13
ovner, у вас все правильно работает, только (разряд - 1) выводит, ну с этим я смогу разобраться
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:38     Определение количества разрядов у числа #14
Цитата Сообщение от Хулиган Посмотреть сообщение
а у меня сработало(( почему так?
Наверное, компилятор другой. В студии не работает. От реализации, наверное, зависит.
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
28.07.2013, 15:41     Определение количества разрядов у числа #15
Цитата Сообщение от Хулиган Посмотреть сообщение
а что неявное преобразование типов отменили?
Ну ваш код у меня в C++ Builder 6, не компилировался.

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Наверное, компилятор другой. В студии не работает. От реализации, наверное, зависит.
В студии, в билдере, и даже в RadStudio XE4, нигде неявное преобразование не работает.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:42     Определение количества разрядов у числа #16
Уточню, в 10 студии не работает, в mingw работает.
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:45     Определение количества разрядов у числа #17
ну и фиг с тем преобразованием, главное методика нахождения работает
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.07.2013, 16:54     Определение количества разрядов у числа #18
Цитата Сообщение от Хулиган Посмотреть сообщение
C++
1
2
3
4
5
6
7
int main()
{
    int i;
    cin>>i;
    cout<<((int)log10(i)+1);
    
}
а что, разложение в ряд Тейлора стало эффективнее простого разбора на цифры с помощью % и /?
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 17:12     Определение количества разрядов у числа #19
Цитата Сообщение от Thinker Посмотреть сообщение
а что, разложение в ряд Тейлора стало эффективнее
по моему об эффективности речи не было
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2013, 17:14     Определение количества разрядов у числа
Еще ссылки по теме:

C++ Проверить как изменится количество разрядов в числе M по сравнению с количеством разрядов числа N
Определение количества нулей в двоичной записи числа C++
C++ Измерение количества единичных разрядов в файле

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

Или воспользуйтесь поиском по форуму:
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
28.07.2013, 17:14     Определение количества разрядов у числа #20
Цитата Сообщение от Хулиган Посмотреть сообщение
по моему об эффективности речи не было
Значит вы гавенный программист, если у вас эффективность, не на первом месте.
Yandex
Объявления
28.07.2013, 17:14     Определение количества разрядов у числа
Ответ Создать тему
Опции темы

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