Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Outmee
2 / 2 / 1
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
1

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

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

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

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

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

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

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

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

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

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

Перевернуть число
1.Перевернуть число. Вводится целое число. Вывести число, состоящее из цифр в...

11
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
27.01.2014, 13:55 2
Лучший ответ Сообщение было отмечено Outmee как решение

Решение

Как они только не иозворачиваются в формулировках...
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 / 1
Регистрация: 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 / 2
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:08 4
Outmee, результат умножается на 10 после чего к нему же прибавляется остаток от деления исходного числа на 10( ну или последняя цифра), после чего исходное чисо делится на 10, для того чтобы из исходного же числа выкинуть последнюю цифру
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
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
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.01.2014, 14:36 6

Не по теме:

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



Добавлено через 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 / 2
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:44 8
Tulosba, а разрешите вопрос не совсем по теме, что такое mutable? наподобии убирание константности? или как выразится?
0
Tulosba
27.01.2014, 14:44
  #9

Не по теме:

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

0
anmartex
...
1710 / 1203 / 909
Регистрация: 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
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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 / 2
Регистрация: 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

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

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

Перевернуть число
Задача: Перевернуть введенное пользователем число и вывести на екран. Сначала...


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

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

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