人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

私にはAとBという友達がいます。
私はAとBそれぞれに借金をしています。
私は所持金の全てを必ずAの借金から先に返済をしなければなりません。
Aの借金を返済して所持金が残った場合は、Bへの借金の返済をします。
私の所持金、Aへの借金、Bへの借金のそれぞれの金額をX,Y,Z
とすると、私のAとBへの借金の残高はもとめる式はどうなるでしょうか?
Aへの借金が1000円、Bへの借金が5000円、私の所持金が500円の場合、私は
Aへ500円返済します。Aへの借金500円、Bへの借金5000円が残ります。
上記のパターンで、私の所持金が1500円だった場合、私はAへの借金を完済
してBへ500円返済し、Bへの借金4500円となります。

●質問者: rizo
●カテゴリ:コンピュータ 学習・教育
✍キーワード:パターン 借金
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● teikan
●80ポイント ベストアンサー

max(a,b)をaとbとのうち大きい方の値とすると、

借金の残高=借金の額から返済前の所持金を引いた額と0とのうち大きい方の額

返済後の所持金=返済前の所持金から借金の額を引いた額と0とのうち大きい方の額

であることから、

Aへの借金の残高=max(Y-X,0)

Aへの返済後の所持金=max(X-Y,0)

Bへの借金の残高=max(Z-max(X-Y,0),0)

となります。

◎質問者からの返答

ありがとうございました!最高です。

なるほど、こういうやり方があるんですね。

勉強になりました。


2 ● l-lol-l
●40ポイント

返済後のAへの借金をa, Bへの借金をb, 残金をcとすると C言語で書くと、次のようになります。ifというのは場合わけで、その条件に当てはまる場合に{}内の結果になるという意味です。elseは今までの条件に合致しない場合です。

if (X>=Y+Z){

a=0;

b=0;

c=X-(Y+Z);

} else if(X>=Y){

a=0;

b=Z-(X-Y);

c=0;

} else {

a=Y-X;

b=Z;

c=0;

}

◎質問者からの返答

IFを使った分岐は考えてみたのですが、もっとシンプルに作ってみたかったもので・・・

でも、大変参考になりました。

ありがとうございました。


3 ● milupon
●30ポイント

Aの残高は、y-x

Bの残高は、x-y が 0 以上なら、z-(x-y)

x-y が 0 以下なら、z

◎質問者からの返答

回答ありがとうございます。

0以上、0以下の部分をもう少し詳しく知りたかったです。

でも、大変参考になりました。


4 ● sami624
●50ポイント

Aのへ借入額=max(Y-X,0)

Bのへ借入額=MAX(Z+MIN(Y-X,0),0)

です。

◎質問者からの返答

teikan とほぼ同じ方法のようですね。

しかしMINを使っていますね。さすがです。

参考にさせていただきます。

ありがとうございます!


5 ● love-and-peace
●20ポイント

あのー意味あるんですかこの議論?

まず借金の話なのにどのような契約関係になっているのかまったく説明がないなんてのは、議論のしようがないですね。

「はじめに契約ありき」です。

とおもったらみなさん(といっても現在3人)の回答は単なる数式になちゃってるじゃぁないですか。数式の問題が出したいなら、借金なんか持ち出さなければいいんです。ほんとに借金で問題があるなら、Aさん、Bさん、とそれぞれどういう契約(口頭も含む)になっているかわからなきゃ結論でないですよ。通常三者合意というのはないでしょうから。それぞれの契約を比較評価して、合法的な結論を出すしかないんですよ。

◎質問者からの返答

す、すみません!自分の説明不足で・・・

質問のとおり「計算式」が知りたいだけでした。

love-and-peaceさん、契約関係で困ったときはぜひお助けください!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ