2017-02-15 5 views
1

私は3つの数字を逆にすることを目的とした1つの機能を持つプログラムで作業しています。コードは数字を反転するときにゼロを埋め込む

int reverseFunction(int userNumber){ 
    int reverse = 0,mod; 
    while (userNumber != 0) 
    { 
     mod = userNumber%10; 
     reverse = reverse*10 + mod; 
     userNumber /= 10; 
    } 

    return reverse; 
} 

これは、あなたがそれを最後より1つだけ大きい最初の番号を持っている数を渡すときを除いて素晴らしい作品のように見えます。逆は後で呼ばれ、上記が真であれば2桁の数字になります。例えば

The number you entered is: 473. 

The reversal of the input is: 374. 

Subtraction of reversal from the original number is: 99. 

Reversal of the resulting number is: 99. 

Addition of the number to the un-reversed form is: 198. 

The final outcome should be: 1089, which is our “Magic Number”. 

「99」に0の「099」が埋め込まれていた場合、正しい番号である1089が吐き出されます。この問題を解決してゼロを埋め込むにはどうしたらいいですか?私はゼロで出力する方法を見てきましたが、ゼロで計算する方法は見ていませんでした。私はC++を使用しています。

+0

099を入力した場合、その逆を990にすることを明確にするだけですか? – user3853544

答えて

0

reverse()機能に問題はありません。コードの別の部分に問題があるように見えます。つまり、逆の番号を元の非反転形式に追加するコードです。

必要な方法で動作させるためには、番号が1,2または3桁であるかどうかを確認し、それに応じて追加を実行する必要があります。例えば

:あなたの逆関数は、数字のすべての種類の番号については、一般的であるため、

int add(int _d, int _r){ // _d is "direct" and _r is "reversed" number 
    int result = _d; 
    if(_r > 99){ // 3 digits 
     result += _r; 
    }else if(_r > 9){ // only 2 digits 
     result += _r * 10; 
    }else{ // only 1 digit 
     result += _r * 100; 
    } 
    return result; 
} 
0

です。だから、あなたが明示的にしたいどのように多くの桁数を指定する必要があります

#include <math.h> 
int reverseFunction(int userNumber,int numOfDigits) 
{ 
    int reverse = 0,mod; 
    int digitsCount = 0; 
    while (userNumber != 0) 
    { 
     mod = userNumber%10; 
     reverse = reverse*10 + mod; 
     userNumber /= 10; 
     digitsCount++; 
    } 
    return reverse*pow(10,numOfDigits-digitsCount); 
} 

これは、現在の数字のすべての種類のパディングことを行う必要があります。

+0

私には見えません。あなたはそのコードをテストしましたか? –

+0

ありがとうございます。私はそうではありませんでした。私はちょっと変わったし、今働いている:) –

関連する問題