поменять местами целые цифры? - PullRequest
6 голосов
/ 26 января 2011

Мне нужно поменять местами целое число следующим образом

input = 12345

output = 54321

Я сделал это, но это дает неправильный вывод, например, 5432

#include <iostream>
using namespace std;

int main(){
 int num,i=10;   
 cin>>num;   

 do{
    cout<< (num%i)/ (i/10);
    i *=10;
   }while(num/i!=0);

 return 0;
}

Ответы [ 13 ]

0 голосов
/ 26 января 2011

Если бы я делал это, я бы (вероятно) начал с создания нового значения как int, а затем распечатал бы это значение.Я думаю, что это должно немного упростить код.В качестве псевдокода это будет выглядеть примерно так:

output = 0;

while (input !=0)
    output *= 10
    output += input % 10
    input /= 10
}
print output

Другая очевидная возможность - сначала преобразовать строку в строку, а затем вывести строку в обратном порядке:

std::stringstream buffer;

buffer << input;

cout << std::string(buffer.str().rbegin(), buffer.str().rend());
0 голосов
/ 26 января 2011

замените ваше заявление while

на

while (i<10*num)
0 голосов
/ 26 января 2011

Хорошо, помните, что целочисленное деление всегда округляется (или приближается к нулю?) В C. Так что же будет num / i, если num < 10 и i = 10?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...