与えられた2つの整数でより小さな範囲を作るにはどうすればよいですか?

例えば、

私には14269-14274の範囲があります。

画面上のスペースを節約するために、ユーザーは14269-74の形式で表示させたいと思っています。

別の例は、14269-529として出力すべき14269-14529の範囲である。

どうすればこれを達成できますか?

2
@SvenS助けてくれてありがとう。私は比較のために文字列に変換することについて考えなかったとは信じられません。私は今、ちょっと愚かな気がする。再度ありがとう:D
追加された 著者 Robert Whitley,
@ SvenS:数字を文字列に変換する必要はありません。 (私の答えを見てください)。
追加された 著者 Sani Singh Huttunen,
あなたが私たちに期待していることは、あなたのためにその機能を書いてください。
追加された 著者 PlasmaHH,
数字を文字列に変換し、文字を1つずつ比較する必要があります。差異が発生すると、2番目の数字の残りの文字を出力します。特殊なケースがいくつかあります(b
追加された 著者 SvenS,
@SaniHuttunen、あなたの答えに私のコメントを参照してください。
追加された 著者 SvenS,
std :: string short_range(int a、int b){/ * implementation * /} および std :: cout << short_range(x、y);
追加された 著者 visitor,

2 答え

このような何かがトリックを行う必要があります:

int a = 14269;
int b = 14529;
int endrange = b % pow(10, floor(log10(b - a) + 1));

You need to make sure that a < b though.

3
追加された
a = 999、b = 1001; b-a = 2; log10(2)〜= 0.3;床(0.3 + 1)= 1; pow(10,1)= 10; b%10 = 1。私はこれがほとんどの組み合わせではうまくいかないと思います。
追加された 著者 SvenS,
具体的には:「2つの数字が異なる桁数」(われわれが知りたいと思うもの)は、「その差の桁数」とは必ずしも同じではありません。
追加された 著者 SvenS,

異なる最初の数字を確認し、最初の数字を出力し、次に2番目の数字を出力し、最初の異なる数字から開始することができます。

これはもちろん、2つの数字が同じ長さである場合にのみ意味をなさない。

あなたは実装を期待していましたか?

1
追加された