• ベストアンサー

反転した数値を表示させるやり方

c++で、数を1つ入力して、その数を反転した値(15876→67851など)を表示する プログラムが作りたいのですが、上手くいきません 一応、自分が知っている程度の知識は、 数値を入力して、その数を10で割った余りが1番上の桁に上がって それを「入力した桁数回」繰り返せば出ると思うのですが、考え方はこれであっていますか? サブ関数を使ってこれを作りたいので、プログラムを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • 6yemon
  • ベストアンサー率69% (25/36)
回答No.3

文字列として反転(さらにそれを数値に変換)してもできますが、 > 10で割った余りが1番上の桁に上がって > それを「入力した桁数回」繰り返せば出る これでできますよ。試しに書いてみました、Cですが。 念のため:負の数を渡してはダメ(笑)。対策は…お考え下さい。 int num_reversed(int original) { int reversed = 0; while (original > 0) { reversed = original % 10 + reversed * 10; original = original / 10; } return reversed; }

toipumoco
質問者

お礼

ありがとうございます。 おかげさまで完成しました。

その他の回答 (6)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.7

>0001で表示したいなら#1の人のように文字列扱いで反転したほうが良いと思うけど。 数値でも、 ・1000を10で割ったあまり(0)を出力する。 ・100を10で割ったあまり(0)を出力する。 ・10を10で割ったあまり(0)を出力する。 ・1を10で割ったあまり(1)を出力する。1を10で割った商が0になったのでおしまい。 というロジックで 0001 の結果を得られます。別に文字列でなくても十分かと。

toipumoco
質問者

お礼

ありがとうございます。

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.6

数値で反転したとき 1000 -> 0001 とかになるけど、これ数値扱いで表示すると1になっちゃうけど、その点はOKなの? 0001で表示したいなら#1の人のように文字列扱いで反転したほうが良いと思うけど。

toipumoco
質問者

お礼

今実行しましたが、確かに0で始まる数値は反転後消えてました。 ありがとうございます。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.5

>プログラムを教えてください。 まずは、アルゴリズムを「自分で」考えてみるところから 始めてみてはいかがでしょうか。 人からもらったソースコードを「読むだけ」では、 身につかないと思います。いかがでしょうか。

回答No.4

C言語の範疇でいいのであれば、 1.数値を入力して、 2.その数値を10で割った余りを表示して 3.その数値を10で割った答えを次の数値として 4.3の答えが0になるまで、2,3を繰り返す で良いのでは?

toipumoco
質問者

お礼

ありがとうございます。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

>その関数は使い方がわかりません;; 調べればいいと思うよ。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

文字列として反転すればいいだけだと思いますよ。 std::reverse(str.begin(), str.end()); とか

toipumoco
質問者

補足

ごめんなさい その関数は使い方がわかりません;; 文字列ではなく、数値で反転はできませんか?