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

Реверсирование - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Наська_91
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 12
22.01.2011, 21:24     Реверсирование #1
Помогите пожалуйста!

Задача
Реверсировать число и увеличить его в 2 раза.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2011, 21:24     Реверсирование
Посмотрите здесь:

C++ Реверсирование строк
Assembler реверсирование строки
Assembler Реверсирование строки
C++ Реверсирование строк
C (СИ) Задача на реверсирование чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
22.01.2011, 22:09     Реверсирование #21
panicwassano, я на первой странице дал суперподробное описание.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.01.2011, 22:15     Реверсирование #22
C++
1
2
3
4
5
6
7
8
9
10
11
#include <algorithm>
#include <string>
#include <boost/lexical_cast.hpp>
 
int ReverseAndDouble(int n) {
  std::string s = boost::lexical_cast<std::string>(n);
 
  std::reverse(s.begin(), s.end());
 
  return 2 * boost::lexical_cast<int>(s);
}
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
22.01.2011, 22:16     Реверсирование #23
там не особо понятно написано. я вижу это так берем число 543 и ищем остаток от деления на 10, будет 3 как это 3 нужно умножить на 100 не зная число разрядов???
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
22.01.2011, 22:19     Реверсирование #24
CyBOSSeR, та же фигня. Громоздко и неповоротливо, да ещё и с подключением сторонней библиотеки.

panicwassano, работа происходит по принципу стека. Из одного числа достаётся, в другое кладётся.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.01.2011, 22:26     Реверсирование #25
Цитата Сообщение от volovzi Посмотреть сообщение
Громоздко и неповоротливо
Код чист, понятен, и не содержит велосипедов. В чем громоздкость и неповоротливость?
Цитата Сообщение от volovzi Посмотреть сообщение
да ещё и с подключением сторонней библиотеки
На код которой можно без проблем положиться.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
22.01.2011, 22:27     Реверсирование #26
volovzi с 1ой переменной что-то совсем никак
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int reversNumber(int Number)
{
    int count = 0;
    int sum = Number;
    while (Number)
    {
        Number /= 10;
        count++;
    }
 
    while (sum)
    {
        Number += (sum % 10)*pow(static_cast<double>(10), --count);
        sum /= 10;
    }
 
    return 2*Number;
}
Наська_91
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 12
22.01.2011, 22:29  [ТС]     Реверсирование #27
ВСЕМ БОЛЬШОЕ СПАСИБО!!!
ТАМ ВСЕ ДЕЙСТВИТЕЛЬНО НАМНОГО ПРОЩЕ...
ВОТ:
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;
int main()
{
    /*Дано довільне ціле число n. Написати програму, яка розбиває число n на цифри і виводить 
    їх на екран; підраховує скільки цифр в числі n; знаходить суму цифр числа n; змінює 
    порядок цифр числа n на зворотній. Збільшити отримане реверсне число у 2 рази.*/
    int n=0, n1=0, n2=0, a=0, b=0, kilkist=0, summ=0, reversne=0;
    cout<<"Enter int n="; 
    cin>>n; 
    n1=n;
    for (int i=0; n!=0; i++)
    {
        a=n%10; //визначає останню цифру числа n
        b=n/10; //відкидає останню цифру числа n
        n=b;
        reversne=reversne*10+a;
        summ+=a; //підраховує сумму цифр в числі n
        kilkist+=1; //підраховує к-ть цифр в числі n
        cout<<a<<"; ";//виводить цифри з яких складається число n
    }
    cout<<"\n";
    cout<<"kilkist="<<kilkist<<endl;
    cout<<"summ="<<summ<<endl;
    cout<<"Reversne="<<reversne<<endl;
    cout<<"Reversne*2="<<reversne*2<<endl;
    cout<<endl;
    return 0;
}
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
22.01.2011, 22:33     Реверсирование #28
CyBOSSeR, перевод числа в строку и наоборот, а так же std::reverse — довольно затратные операции. Можно сделать не менее чисто и понятно, но без лишних операций.

Добавлено через 1 минуту
Наська_91, молодец .

panicwassano, если почистить Наськин код, то как раз можно обойтись одной переменной.
Наська_91
0 / 0 / 0
Регистрация: 15.01.2011
Сообщений: 12
22.01.2011, 22:33  [ТС]     Реверсирование #29
volovzi, спасибо
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
22.01.2011, 22:38     Реверсирование #30

C++
1
2
3
4
5
6
7
8
9
10
11
int reversNumber(int Number)
{
    int newNumber = 0;
    while (Number)
    {
        newNumber = newNumber*10 + (Number % 10);
        Number /= 10;
    }
 
    return 2*newNumber;
}
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
22.01.2011, 22:53     Реверсирование #31
panicwassano, оно!
А у меня было так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int reverse (int number) {
    int x = 0;
    
    while (number > 0) {
        x *= 10;
        x += number % 10;
        number /= 10;
    }
    
    return x;
}
 
int main () {
    int x;
    std::cin >> x;
    
    std::cout << 2 * reverse(x) << std::endl;
 
    return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
22.01.2011, 22:57     Реверсирование #32
Только недавно была подобная тема
необходимо перевернуть его (число) и вывести на экран.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2011, 23:03     Реверсирование
Еще ссылки по теме:

Реверсирование списка (перестановка элементов в обратном порядке) Prolog

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

Или воспользуйтесь поиском по форуму:
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
22.01.2011, 23:03     Реверсирование #33
rangerx, у нас здесь интересней было.
Yandex
Объявления
22.01.2011, 23:03     Реверсирование
Ответ Создать тему
Опции темы

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