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

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

30.11.2011, 23:30. Показов 35535. Ответов 9
Метки нет (Все метки)

Подскажите,алгоритм программы,которая выполняет разделение числа на разряды.
Т.е вводится число,например, 456 и программа выводит 400-50-46
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2011, 23:30
Ответы с готовыми решениями:

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

Деление числа на разряды
Дан массив из n натуральных четырёхзначных чисел. Вывести на экран только те, у которых сумма...

Вывести все разряды числа наоборот
Задача: вывести все разряды числа наоборот. Допустим 9876 И оно должно стать 6789

Вывод числа с разбитием на разряды (cout)
Добрый время суток! Вот чую зря создавал новую тему но все же... Вот хоть убейте не помню...

9
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
01.12.2011, 07:58 2
Такой бред мне не снести. 400 ещё ладно. 50 - из той же серии. Но в 46 заполнено два разряда.
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
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;
}
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
01.12.2011, 08:24 4
Цитата Сообщение от PointsEqual Посмотреть сообщение
int curr = value % 10;
это младший (правый) разряд, причём без веса.
Цитата Сообщение от PointsEqual Посмотреть сообщение
for(int i = 0; i < cnt; ++i)
* * * * {
* * * * * * curr *= 10;
* * * * }
А это умножение на его вес можно упростить и ускорить.
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
01.12.2011, 08:29 5
Цитата Сообщение от taras atavin Посмотреть сообщение
А это умножение на его вес можно упростить и ускорить.
упрощайте, ускоряйте
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
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;
}
.
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
01.12.2011, 08:41 7
taras atavin, первый вариант не компилится, 2-ой - неправильно работает
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
01.12.2011, 09:00 8
Пропущена #include <iostream> и value везде одинаково написать.

Добавлено через 2 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
2-ой - неправильно работает
экран теста пожалуйста. У меня всё сошлось.
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
01.12.2011, 09:06 9
Цитата Сообщение от taras atavin Посмотреть сообщение
экран теста пожалуйста.
.....
Миниатюры
Разделение числа на разряды  
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
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);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2011, 09:15

В каждом байте числа зеркально поменять местами разряды
Задание: в одномерном массиве чисел целого типа (32 бит) выполнить следующую двоичную обработку. В...

Зеркально поменять местами разряды младшего байта каждого числа
Добрый день. Помогите пожалуйста решить задачу, весьма срочно, родина вас не забудет друзья)...

Найти разряды числа если разряд равен 5 или 7 то сделать его 0
Найти разряды числа если разряд равен 5 или 7 то сделать его 0 с++ Добавлено через 45 секунд...

Определить сумму цифр во второй половине натурального числа (младшие разряды)
Дано натуральное число N(N &gt; 9). Определить сумму цифр во второй половине числа (младшие разряды)....


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

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

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