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

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

Войти
Регистрация
Восстановить пароль
 
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
#1

Перевернуть число - C++

27.01.2014, 13:51. Просмотров 917. Ответов 11
Метки нет (Все метки)

Здравствуйте, Ув. Форумчане

Очень интересен алгоритм построения этой программы

Буду особо благодарен

Смею заметить что в запас знаний ожидает желать лучшего.
Длинна кода особого значения не имеет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 13:51     Перевернуть число
Посмотрите здесь:

Перевернуть число (перевернутое число выводится на экран) - C++
Помогите написать программу с комментариями (Рекурсия) Перевернуть число (перевернутое число выводится на экран)

Перевернуть число - C++
Задача Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое число, которое выйдет после...

Перевернуть число - C++
Задача: Перевернуть введенное пользователем число и вывести на екран. Сначала я подсчитал количество цифр в числе: #include...

Перевернуть число - C++
Пользователь вводит с клавиатуры число, необходимо перевернуть его (число) и вывести на экран. Примечание: Например, пользователь ввел...

Перевернуть число - C++
Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке по сравнению с введенным числом.

перевернуть двоичное число - C++
Нужно ввести число от 1 до 32 бит, указать количество бит, а затем перевернуть требуемое количество бит и вывести результат т.е. ввели...

Перевернуть число (циклы) - C++
Добрый вечер! Помогите, пожалуйста, решить задачу через любые циклы, то есть массив использовать нельзя. Сама задача: Пользователь...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
27.01.2014, 13:55     Перевернуть число #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как они только не иозворачиваются в формулировках...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int main()
{
    int n = 123456;
 
    int rev_n = 0;
 
    while (n)
    {
        rev_n = rev_n * 10 + (n % 10);
        n /= 10;
    }
 
    std::cout << rev_n << std::endl;
}
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
27.01.2014, 14:07  [ТС]     Перевернуть число #3
C++ (Qt)
1
2
3
4
5
while (n)
    {
        rev_n = rev_n * 10 + (n % 10);
        n /= 10;
    }
Что тут происходит?

Добавлено через 1 минуту
Фирштейн, спасибо
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:08     Перевернуть число #4
Outmee, результат умножается на 10 после чего к нему же прибавляется остаток от деления исходного числа на 10( ну или последняя цифра), после чего исходное чисо делится на 10, для того чтобы из исходного же числа выкинуть последнюю цифру
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
27.01.2014, 14:14     Перевернуть число #5
Мне иногда становится интересно: а если на каждый чих написать отдельную функцию, такой код будет ясен или вызовет еще больше вопросов?
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>
 
void remove_last_digit(int& n) {
    n /= 10;
}
 
int get_last_digit(int& n) {
    return n % 10;
}
 
void add_last_digit(int& n, int digit) {
    n = n * 10 + digit;
}
 
int main()
{
    int n = 1023456;
 
    int rev_n = 0;
 
    while (n)
    {
        int last = get_last_digit(n);
        add_last_digit(rev_n, last);
        remove_last_digit(n);
    }
 
    std::cout << rev_n << std::endl;
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.01.2014, 14:36     Перевернуть число #6

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
вызовет еще больше вопросов
т.к. прокомментируйте, пожалуйста, на русском



Добавлено через 13 минут
Более "лучший" оопешный вариант:
Кликните здесь для просмотра всего текста
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
 
class reverser
{
public:
    reverser(int orig) : orig(orig), done(false) {}
    int result() const { return done ? res : reverse(); }
private:
    int reverse() const
    {
        res = 0;
        int n = orig;
        while (n)
        {
            int last = get_last_digit(n);
            add_last_digit(res, last);
            remove_last_digit(n);
        }
        done = true;
        return res;
    }
 
    static void remove_last_digit(int& n) {
        n /= 10;
    }
     
    static int get_last_digit(int& n) {
        return n % 10;
    }
     
    static void add_last_digit(int& n, int digit) {
        n = n * 10 + digit;
    }
 
    mutable int res;
    const int orig;
    mutable bool done;
};
 
int main()
{
    int n = 1023456;
    reverser* rev = new reverser( n );
    std::cout << rev->result() << std::endl;
    delete rev;
}
http://ideone.com/JMJ6Vk
0x10
27.01.2014, 14:42
  #7

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Более "лучший" оопешный вариант:
Да давай уже сразу итератор, который поразрядно обходит целое число) И std::reverse какой-нибудь на него.

lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:44     Перевернуть число #8
Tulosba, а разрешите вопрос не совсем по теме, что такое mutable? наподобии убирание константности? или как выразится?
Tulosba
27.01.2014, 14:44
  #9

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
поразрядно обходит целое число
и ни один бит не останется безнаказанным

anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
27.01.2014, 14:46     Перевернуть число #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Можно и так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cmath>
 
unsigned Func(unsigned value) {
   return value ? pow(10, static_cast<unsigned>(log10(value))) * (value % 10) + Func(value / 10) : 0;
}
 
int main() {
   std::cout << Func(123456) << std::endl;
 
   return 0;
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.01.2014, 14:51     Перевернуть число #11
Цитата Сообщение от lukalexrus Посмотреть сообщение
что такое mutable?
mutable позволяет менять поле из константной функции (ну или для константного объекта).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
struct C
{
    C(): a(0) {}
    mutable int a;  
};
 
int main() {
    
    C c;
    
    c.a = 10;
    
    const C cc;
    
    cc.a = 42; // без mutable эта строчка не компилируется
    
    return 0;
}
http://ideone.com/HipARx

Добавлено через 2 минуты
anmartex, на отрицательных числах ж*па
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 14:54     Перевернуть число
Еще ссылки по теме:

Перевернуть четырехзначное число - C++
переворачивающую 4-хзначное число, и чтобы была проверка условия если число не 4-х значное то программа выключается, так необходимо делать...

Перевернуть каждое число в строке - C++
пытался написать программу которая каждые 4 цифры в вводимой строке переворачивает, то есть выражение 1234 5678 было бы 4321 8765 вот...

Перевернуть шестнадцатеричное число oxА28Е - C++
Помогите решить задачу: дано шестнадцатеричное число oxА28Е надо перевернуть его так, чтобы последний бит стал первым и так далее, и...

Перевернуть введенное пользователем число - C++
Ввести с клавиатуры число и перевернуть его «физически» (например, число 2356 станет числом 6532). Диалог с пользователем реализовать при...

необходимо перевернуть его (число) и вывести на экран. - C++
1. Пользователь вводит с клавиатуры число - программа должна показать сколько в данном числе цифр. Число вводится целиком в одну...


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

Или воспользуйтесь поиском по форуму:
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:54     Перевернуть число #12
Tulosba, спасибо, буду знать
Yandex
Объявления
27.01.2014, 14:54     Перевернуть число
Ответ Создать тему
Опции темы

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