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

Разделение числа на разряды - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.67
altemka
 Аватар для altemka
0 / 0 / 0
Регистрация: 22.11.2011
Сообщений: 26
30.11.2011, 23:30     Разделение числа на разряды #1
Подскажите,алгоритм программы,которая выполняет разделение числа на разряды.
Т.е вводится число,например, 456 и программа выводит 400-50-46
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 23:30     Разделение числа на разряды
Посмотрите здесь:

C++ Разделение числа на цифры
Разделение числа C++
C++ Деление числа на разряды
Разделение числа на цифры C++
C++ Деление числа на разряды
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.12.2011, 07:58     Разделение числа на разряды #2
Такой бред мне не снести. 400 ещё ладно. 50 - из той же серии. Но в 46 заполнено два разряда.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 08:13     Разделение числа на разряды #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
#include <iostream>
 
using namespace std;
 
void f(int value)
{
    int cnt = 0;
 
 
    while(value)
    {
        int curr = value % 10;
        value /= 10;
 
        for(int i = 0; i < cnt; ++i)
        {
            curr *= 10;
        }
 
        ++cnt;
        cout << curr << endl;
    }
}
 
int main()
{
    f(45632);
    return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.12.2011, 08:24     Разделение числа на разряды #4
Цитата Сообщение от PointsEqual Посмотреть сообщение
int curr = value % 10;
это младший (правый) разряд, причём без веса.
Цитата Сообщение от PointsEqual Посмотреть сообщение
for(int i = 0; i < cnt; ++i)
* * * * {
* * * * * * curr *= 10;
* * * * }
А это умножение на его вес можно упростить и ускорить.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 08:29     Разделение числа на разряды #5
Цитата Сообщение от taras atavin Посмотреть сообщение
А это умножение на его вес можно упростить и ускорить.
упрощайте, ускоряйте
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.12.2011, 08:38     Разделение числа на разряды #6
обратный порядок разрядов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 int x;
void Digits(int value)
{
 int Digit;
 int m;
 m=1;
 do
 {
  Digit=(Value%10)*m;
  m*=10;
  Value/=10;
  std::cout<<Digit<<endl;
 } while (Value!=0);
}
int main()
{
  Digits(1024);
  return 0;
}
, прямой порядок:
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
void Digits(int value)
{
 int x;
 int Digit;
 int m;
 x=value;
 m=1;
 do
 {
  m*=10;
  x/=10;
 } while (x!=0);
 for (x=value, m/=10; m!=0; m/=10)
 {
  Digit=(x%m)*m;
  x-=Digit;
  m/=10;
  std::cout<<Digit<<endl;
 }
}
int main()
{
  Digits(1024);
  return 0;
}
.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 08:41     Разделение числа на разряды #7
taras atavin, первый вариант не компилится, 2-ой - неправильно работает
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.12.2011, 09:00     Разделение числа на разряды #8
Пропущена #include <iostream> и value везде одинаково написать.

Добавлено через 2 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
2-ой - неправильно работает
экран теста пожалуйста. У меня всё сошлось.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.12.2011, 09:06     Разделение числа на разряды #9
Цитата Сообщение от taras atavin Посмотреть сообщение
экран теста пожалуйста.
.....
Миниатюры
Разделение числа на разряды  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 09:15     Разделение числа на разряды
Еще ссылки по теме:

C++ Разделение числа на целую и дробную части
Дано натуральное число N(N > 9). Определить сумму цифр в первой половине числа (старшие разряды). Пример. N=12 C++
C++ Определить сумму цифр во второй половине натурального числа (младшие разряды)

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.12.2011, 09:15     Разделение числа на разряды #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
 void Digits(int value)
{
 int x;
 int Digit;
 int m;
 x=value;
 m=1;
 do
 {
  m*=10;
  x/=10;
 } while (x!=0);
 for (x=value, m/=10; m!=0; m/=10)
 {
  Digit=(x/m)*m;
  x-=Digit;
  Form1->Memo1->Lines->Add(IntToStr(Digit));
 }
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Digits(1024);
}
. То есть должно быть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void Digits(int value)
{
 int x;
 int Digit;
 int m;
 x=value;
 m=1;
 do
 {
  m*=10;
  x/=10;
 } while (x!=0);
 for (x=value, m/=10; m!=0; m/=10)
 {
  Digit=(x/m)*m;
  x-=Digit;
  str::cout<<Digit;
 }
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Digits(1024);
}
Yandex
Объявления
01.12.2011, 09:15     Разделение числа на разряды
Ответ Создать тему
Опции темы

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