поменять местами целые цифры? - 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 ]

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

Вот решение

    int num = 12345;
    int new_num = 0;
    while(num > 0)
    {
            new_num = new_num*10 + (num % 10);
            num = num/10;
    }
    cout << new_num << endl;
10 голосов
/ 26 января 2011

Ваш цикл заканчивается слишком рано.Измените

}while(num/i!=0);

на

}while((num*10)/i!=0);

, чтобы получить еще одну итерацию, и ваш код будет работать.

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

Если вы попробуете один раз в качестве примера, вы увидите свою ошибку.

Ввод : 12

первый цикл:

out : 12% 10 = 2/1 = 2
я = 100
тест : 12/100 = 0 (как целое число)

прерывает работу слишком рано.

Одним из решений может быть тестирование

(число% i)! = Число

Так же, как одно из многих решений.

0 голосов
/ 31 января 2017
template <typename T>
T reverse(T n, size_t nBits = sizeof(T) * 8)
{
    T reverse = 0;
    auto mask = 1;

    for (auto i = 0; i < nBits; ++i)
    {
        if (n & mask)
        {
            reverse |= (1 << (nBits - i - 1));
        }
        mask <<= 1;
    }

    return reverse;
}

Это будет инвертировать биты в любом целом со знаком или без знака (short, byte, int, long ...). Вы можете предоставить дополнительный параметр nBits для кадрирования битов при обращении.

я. е. 7 в 8 бит = 00000111 -> 11100000 7 в 4 бита = 0111 -> 1110

0 голосов
/ 03 февраля 2016

Я сделал это просто, но это применимо к пятизначным числам, но надеюсь, что это поможет

 #include<iostream>
    using namespace std;
void main()
{ 
    int a,b,c,d,e,f,g,h,i,j;
    cin>>a;
    b=a%10;
    c=a/10;
    d=c%10;
    e=a/100;
    f=e%10;
    g=a/1000;
    h=g%10;
    i=a/10000;
    j=i%10;
    cout<<b<<d<<f<<h<<j;
}`
0 голосов
/ 16 декабря 2015
int a,b,c,d=0;
cout<<"plz enter the number"<<endl;
cin>>a;
b=a;
do
{
    c=a%10;
    d=(d*10)+c; 
    a=a/10;
}
while(a!=0);
cout<<"The reverse of the number"<<d<<endl;
if(b==d)
{
    cout<<"The entered number is palindom"<<endl;
}
else
{
    cout<<"The entered number is not palindom"<<endl;
}

}

0 голосов
/ 23 ноября 2015

Следующий код работает только для двузначного числа.

#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << (n%10) << (n/10);    
return 0;
}
0 голосов
/ 27 января 2015

Это задание по кодированию для моего курса в колледже.Это назначение происходит сразу после обсуждения перегрузки операторов в C ++.Хотя не ясно, следует ли использовать для перегрузки перегрузку.

0 голосов
/ 10 июня 2011

открытый класс TestDS {

public static void main(String[] args) {

    System.out.println(recursiveReverse(234));
           System.out.println(recursiveReverse(234 ,0));



}



public static int reverse(int number){

    int reversedNumber = 0;
    int temp = 0;


    while(number > 0){

        //use modulus operator to strip off the last digit
        temp = number%10;

        //create the reversed number
        reversedNumber = reversedNumber * 10 + temp;
        number = number/10;

    }



    return reversedNumber;

}



private static int reversenumber =0;
public static int recursiveReverse(int number){

    if(number <= 0){

        return reversenumber;
    }

    reversenumber = reversenumber*10+(number%10);
    number =number/10;

    return recursiveReverse(number);

}

public static int recursiveReverse(int number , int reversenumber){

    if(number <= 0){

        return reversenumber;
    }

    reversenumber = reversenumber*10+(number%10);
    number =number/10;

    return recursiveReverse(number,reversenumber);

}

}

0 голосов
/ 26 января 2011
int _tmain(int argc, _TCHAR* argv[])
{
int x = 1234;
int out = 0;
while (x != 0)
{
    int Res = x % (10 );
    x /= 10;
    out *= 10;
    out +=  Res;
}
cout << out;


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