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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
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;
}
4
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 минуту
Фирштейн, спасибо
0
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:08 #4
Outmee, результат умножается на 10 после чего к нему же прибавляется остаток от деления исходного числа на 10( ну или последняя цифра), после чего исходное чисо делится на 10, для того чтобы из исходного же числа выкинуть последнюю цифру
0
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
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;
}
2
Tulosba
:)
Эксперт С++
4396 / 3232 / 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
2
0x10
27.01.2014, 14:42
  #7

Не по теме:

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

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

Не по теме:

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

0
anmartex
...
1706 / 1199 / 496
Регистрация: 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;
}
3
Tulosba
:)
Эксперт С++
4396 / 3232 / 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, на отрицательных числах ж*па
2
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:54 #12
Tulosba, спасибо, буду знать
0
27.01.2014, 14:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 14:54
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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