プロが教えるわが家の防犯対策術!

c言語について。
untinを10km単位に切り上げて、
10kmあたり50円を加算するという
計算をするために以下のようにしてみたのですが
うまくいきません。
どこかおかしいのでしょうか?
if(untin % 10 != 0) untin = untin + 50;

A 回答 (5件)

例えば、35kmの場合の運賃を計算するとどうなりますか?


その場合の計算手順をなるべく正確に書いてみてください。

その計算手順とプログラムとを比べると?

この回答への補足

ご返事有り難うございました。

運賃が100円の場合

35km→→150円
39km→→150円
40km→→200円
43km→→200円

です。

補足日時:2005/06/27 14:31
    • good
    • 0

10単位で切り上げたいのなら、



untin = untin + 10 - untin % 10;

で切り上がります。

50円加算とは、23と入力したら80、31と入力したら90と表示されれば良いのでしょうか?それとも、23と入力したら150、31と入力したら200と表示したいということでしょうか?

貴方のプログラムなら前者を表現したいように見えますが、質問文だと後者のような気もします。

前者だとすると
untin = untin + 60 - untin % 10
後者だとすると
untin = untin + 10 - untin % 10
untin = 50 * untin / 10

問題の意図が違っていたらすみません。

この回答への補足

ご返事有り難うございました。

説明が悪くてすいませんでした。
意図してるのは前者の方です。

もう一つ伺いたいのは、
今は20で70と50円加算されるんですが
20の時は20円のままで
21の時に70としたいのですが・・・。

すいませんが
よろしくお願いします。

補足日時:2005/06/27 16:50
    • good
    • 0

> 運賃が100円の場合


> 35km→→150円

どういう計算で150円を導くのか、書いてみてください。

例)
35の1の位の5を切上げて40
10kmあたり50円なので、40kmでは200円
運賃100円に200円を足して、300円
とか。
正直、何をどう計算して150円が出るのかわかりません。

あと、説明文には「円」なのか「km」なのか、単位をつけると余計な誤解が生じません。
やりたいのは距離から運賃を求めたい事だと思いますが、そうなると変数はuntinの他にkyoriを使った方が簡単なのでは?
    • good
    • 0
この回答へのお礼

ご返事有り難うございました。
これから質問する時は気を付けたいと思います。

お礼日時:2005/06/30 10:10

>もう一つ伺いたいのは、


今は20で70と50円加算されるんですが
20の時は20円のままで
21の時に70としたいのですが・・・。

省略したのがまずかったですね。貴方のifのプログラムのところの下の部分だけ書いたつもりでした。

if(untin % 10 != 0)
untin = untin + 50 - untin % 10;

これで、20のときは20、21のときは70となります。
    • good
    • 0
この回答へのお礼

ご丁寧なご返事有り難うございました。
お陰様で解決しました。

お礼日時:2005/06/30 10:11

C言語での切り上げ等は、加算と整数型へのキャストで可能です。


以下は、距離に9を加算することで切り上げて、
10で割ってint型へのキャストで整数(少数点以下を切り捨て)にして、単位の50円を掛けています。
加算する数値を5にすれば、四捨五入のようなことも
出来ますし、これは、考え方だけなので、
後は、実際に自分で色々試してみたらいかがでしょうか。
==============================================
int untin; // 運賃
int kyori; // 距離(1km単位)

...(途中、省略)

//運賃の計算
untin = (int((kyori+9)/10))*50;
    • good
    • 0
この回答へのお礼

こういう方法もあるんですね。
大変に参考になりました。

お礼日時:2005/06/30 11:17

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