2011-01-26 2 views
5
난이

정수 자릿수의 위치를 ​​바꿉니 까?

입력과 같은 정수의 위치를 ​​반대로 할

= 12345

출력 =

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; 
} 
+0

값을 정수로 처리해야합니까? 아니면 문자열이나 문자 배열로 처리 할 수 ​​있습니까? –

+0

정수만, 나는 루프 나 선택 이외의 것을 사용할 수 없다 ... – bbjkdsfj

+0

이미 많은 중복이 있으므로 (이번에는 올해 숙제하는 숙제 질문 인 것 같다. [C 프로그램을 역순으로 숫자] (http://stackoverflow.com/questions/2351251/c-program-for-the-reverse-the-digits) –

답변

10

루프가 너무 일찍 종료됩니다. 한 번 더 반복을 얻을 수

}while(num/i!=0); 

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

에 변경 한 코드가 작동합니다.

0

음을 제공 기억했다 그 정수 나누기는 항상 C에서 0으로 끝나는 것을 반올림합니다. num < 10i = 10 일 경우 num/i은 무엇이 될까요?

2

한 번 시도해 본다면 오류가 표시됩니다.

입력 12

1 루프 :

아웃 : 12 % 10 = 1/2 = 2
I = 100
시험 : 1백분의 12 = 0 (정수로)

너무 일찍 중단합니다.

하나의 해결책은

(NUM 개 %의 I)! = NUM에게 많은 솔루션

그냥 하나를 테스트 할 수있다.

0

것은

다음
while (i<10*num) 
12

int num = 12345; 
    int new_num = 0; 
    while(num > 0) 
    { 
      new_num = new_num*10 + (num % 10); 
      num = num/10; 
    } 
    cout << new_num << endl; 
0

내가 그 일을한다면, 나는 (아마도) 새로운 값을 생성하여 시작 했죠 솔루션입니다

으로 while 문 교체 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
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; 


} 
-1

공용 클래스를 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

이것은 내 대학 과정의 코딩 과제입니다. 이 할당은 C++의 연산자 오버로딩에 대한 설명 후 바로 제공됩니다. 오버로드가 할당에 사용되어야하는지 여부는 명확하지 않습니다.

0

다음 코드는 두 자리 숫자로만 작동합니다.

#include<iostream> 
using namespace std; 

int main() { 
    int n; 
    cin >> n; 
    cout << (n%10) << (n/10);  
return 0; 
} 
+0

이 질문은 꽤 오래되었고 이미 ** 많은 ** 2 자리보다 일반적인 경우에 적합한 대답. 당신의 대답은 왜 더 나은가요? –

0
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

제안하는 솔루션에 대한 설명을 추가하십시오. –

-1

단순히 이런 짓을했는지하지만이 5 개 자리 숫자 개까지 적용 할 수 있지만,이 모든 비트를 반전합니다

#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

슬프게도 확장 성이 좋지 않습니다. - 더 큰 숫자에도 확장 가능하도록 채택 할 수 있습니까? –

0
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를 제공 할 수 있습니다.

i. 이자형. 7 비트 = 00000111 -> 11100000 7 in 4 비트 = 0111 -> 1110

관련 문제