牛、豚、鶏、どれか一つ食べられなくなるとしたら?

c++で、数を1つ入力して、その数を反転した値(15876→67851など)を表示する
プログラムが作りたいのですが、上手くいきません

一応、自分が知っている程度の知識は、
数値を入力して、その数を10で割った余りが1番上の桁に上がって
それを「入力した桁数回」繰り返せば出ると思うのですが、考え方はこれであっていますか?

サブ関数を使ってこれを作りたいので、プログラムを教えてください。

A 回答 (7件)

文字列として反転(さらにそれを数値に変換)してもできますが、



> 10で割った余りが1番上の桁に上がって
> それを「入力した桁数回」繰り返せば出る

これでできますよ。試しに書いてみました、Cですが。
念のため:負の数を渡してはダメ(笑)。対策は…お考え下さい。

int num_reversed(int original)
{
int reversed = 0;

while (original > 0) {
reversed = original % 10 + reversed * 10;
original = original / 10;
}
return reversed;
}
    • good
    • 1
この回答へのお礼

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

お礼日時:2010/01/23 19:16

>0001で表示したいなら#1の人のように文字列扱いで反転したほうが良いと思うけど。



数値でも、
・1000を10で割ったあまり(0)を出力する。
・100を10で割ったあまり(0)を出力する。
・10を10で割ったあまり(0)を出力する。
・1を10で割ったあまり(1)を出力する。1を10で割った商が0になったのでおしまい。
というロジックで
0001
の結果を得られます。別に文字列でなくても十分かと。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2010/01/23 19:26

数値で反転したとき 1000 -> 0001 とかになるけど、これ数値扱いで表示すると1になっちゃうけど、その点はOKなの?


0001で表示したいなら#1の人のように文字列扱いで反転したほうが良いと思うけど。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/01/23 19:24

>プログラムを教えてください。



まずは、アルゴリズムを「自分で」考えてみるところから
始めてみてはいかがでしょうか。

人からもらったソースコードを「読むだけ」では、
身につかないと思います。いかがでしょうか。
    • good
    • 1

C言語の範疇でいいのであれば、



1.数値を入力して、
2.その数値を10で割った余りを表示して
3.その数値を10で割った答えを次の数値として
4.3の答えが0になるまで、2,3を繰り返す

で良いのでは?
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2010/01/23 19:17

>その関数は使い方がわかりません;;



調べればいいと思うよ。
    • good
    • 0

文字列として反転すればいいだけだと思いますよ。



std::reverse(str.begin(), str.end());

とか

この回答への補足

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

補足日時:2010/01/22 21:19
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報