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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
#1

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

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

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

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 14:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определение количества разрядов у числа (C++):

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

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

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

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

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

Массивы. Определение максимального целого числа из произвольного количества введенных значений - 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;
}
так должно работать
0
Bend3r
149 / 136 / 18
Регистрация: 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
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:11 #4
Цитата Сообщение от Bend3r Посмотреть сообщение
for(int i = 0; i < strlen(str); i++)
{
counter++;
}
Это для чего? strlen(str) недостаточно?
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
28.07.2013, 15:14 #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Это для чего? strlen(str) недостаточно?
Достаточно, просто поздно об этом подумал.
0
Хулиган
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);
    
}
0
Bend3r
149 / 136 / 18
Регистрация: 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
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:28 #8
Цитата Сообщение от Bend3r Посмотреть сообщение
log10 от int числа, не работает
C++
1
cout<<(int)log10((double)i)+1;
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:30 #9
Цитата Сообщение от Bend3r Посмотреть сообщение
log10 от int числа, не работает
а что неявное преобразование типов отменили?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
28.07.2013, 15:33 #10
Хулиган, в MSVS 2012 все нормально работает.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:34 #11
Цитата Сообщение от Хулиган Посмотреть сообщение
а что неявное преобразование типов отменили?
Неявное тут не работает.
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
28.07.2013, 15:35 #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Неявное тут не работает
а у меня сработало(( почему так?
0
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
28.07.2013, 15:36  [ТС] #13
ovner, у вас все правильно работает, только (разряд - 1) выводит, ну с этим я смогу разобраться
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 15:38 #14
Цитата Сообщение от Хулиган Посмотреть сообщение
а у меня сработало(( почему так?
Наверное, компилятор другой. В студии не работает. От реализации, наверное, зависит.
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
28.07.2013, 15:41 #15
Цитата Сообщение от Хулиган Посмотреть сообщение
а что неявное преобразование типов отменили?
Ну ваш код у меня в C++ Builder 6, не компилировался.

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Наверное, компилятор другой. В студии не работает. От реализации, наверное, зависит.
В студии, в билдере, и даже в RadStudio XE4, нигде неявное преобразование не работает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2013, 15:41
Привет! Вот еще темы с ответами:

Измерение количества единичных разрядов в файле - C++
Разработать объектно-ориентированную программу для измерения общего числа единичных разрядов во всех байтах любого заданного файла. Его имя...

Возврат количества разрядов после запятой - C++
Друзья, подскажите Мне нужно определить, сколько было введено пользователем цифр после запятой (если введено 45.560731 необходимо...

Посчитать m последних разрядов числа n - C++
Всем привет! В свободное от работы время занимаюсь программированием - подтягиваю свой уровень до того, который был когда-то раньше,...

Вывести все числа с количеством разрядов n - C++
Нужно вывести все n-цифровые числа. Вводится одное число n и выводится все n-цифровые числа


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.07.2013, 15:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru