0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
1

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

28.07.2013, 14:37. Показов 24551. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал программку, которая должна определять количество разрядов у чисел. При вводе двухзначных и трехзначных, программа правильно определяет разряд, но при вводе четырехзначных чисел и более, начинает определять неправильно. Помогите определить проблему.

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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2013, 14:37
Ответы с готовыми решениями:

Определение количества разрядов числа через функцию
Вводится последовательность из N целых чисел. Найти количество двух- и количество трех-разрядных...

Проверить как изменится количество разрядов в числе M по сравнению с количеством разрядов числа N
Дано натуральное число N. Определить M=N! Проверить как измениться количевство разрядов в числе M...

Проверить, как изменилось количество разрядов в числе M по сравнению с количеством разрядов числа N
Выручайте....Дано натуральное число N. Определить M=N!. Проверить, как изменилось количество...

Функцией оформить определение количества делителей числа
Вводится последовательность целых чисел, 0 – конец последовательности. Для каждого числа...

29
7 / 7 / 5
Регистрация: 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;
}
так должно работать
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
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");
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:11 4
Цитата Сообщение от Bend3r Посмотреть сообщение
for(int i = 0; i < strlen(str); i++)
{
counter++;
}
Это для чего? strlen(str) недостаточно?
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
28.07.2013, 15:14 5
Цитата Сообщение от alsav22 Посмотреть сообщение
Это для чего? strlen(str) недостаточно?
Достаточно, просто поздно об этом подумал.
0
88 / 83 / 21
Регистрация: 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);
    
}
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
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);
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:28 8
Цитата Сообщение от Bend3r Посмотреть сообщение
log10 от int числа, не работает
C++
1
cout<<(int)log10((double)i)+1;
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:30 9
Цитата Сообщение от Bend3r Посмотреть сообщение
log10 от int числа, не работает
а что неявное преобразование типов отменили?
0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
28.07.2013, 15:33 10
Хулиган, в MSVS 2012 все нормально работает.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:34 11
Цитата Сообщение от Хулиган Посмотреть сообщение
а что неявное преобразование типов отменили?
Неявное тут не работает.
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:35 12
Цитата Сообщение от alsav22 Посмотреть сообщение
Неявное тут не работает
а у меня сработало(( почему так?
0
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
28.07.2013, 15:36  [ТС] 13
ovner, у вас все правильно работает, только (разряд - 1) выводит, ну с этим я смогу разобраться
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:38 14
Цитата Сообщение от Хулиган Посмотреть сообщение
а у меня сработало(( почему так?
Наверное, компилятор другой. В студии не работает. От реализации, наверное, зависит.
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
28.07.2013, 15:41 15
Цитата Сообщение от Хулиган Посмотреть сообщение
а что неявное преобразование типов отменили?
Ну ваш код у меня в C++ Builder 6, не компилировался.

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Наверное, компилятор другой. В студии не работает. От реализации, наверное, зависит.
В студии, в билдере, и даже в RadStudio XE4, нигде неявное преобразование не работает.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:42 16
Уточню, в 10 студии не работает, в mingw работает.
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:45 17
ну и фиг с тем преобразованием, главное методика нахождения работает
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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);
    
}
а что, разложение в ряд Тейлора стало эффективнее простого разбора на цифры с помощью % и /?
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 17:12 19
Цитата Сообщение от Thinker Посмотреть сообщение
а что, разложение в ряд Тейлора стало эффективнее
по моему об эффективности речи не было
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
28.07.2013, 17:14 20
Цитата Сообщение от Хулиган Посмотреть сообщение
по моему об эффективности речи не было
Значит вы гавенный программист, если у вас эффективность, не на первом месте.
0
28.07.2013, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2013, 17:14
Помогаю со студенческими работами здесь

Определение количества нулей в двоичной записи числа
Определить, сколько нулей в двоичной записи произвольного числа А (100&lt;А&lt;1000)?

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

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

выявлять числа, у которых сумма чётных разрядов равна сумме нечётных разрядов
помогите решить задачку: До получения исла равного 0 выявлять числа, среди последовательносьти из...

Получить третье число путем логического сложения четных разрядов первого числа и нечетных разрядов второго
Нужна твоя помощь в TASM: нужно написать программу,а я не понимаю: Даны 2 числа в двоичном коде....

Определение количества вхождений числа в матрице
и снова здравствуйте) помогите решить задачу: найти количество вхождений заданного числа в массив....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru