• ベストアンサー

切り上げたい

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

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

  • ベストアンサー
回答No.4

>もう一つ伺いたいのは、 今は20で70と50円加算されるんですが 20の時は20円のままで 21の時に70としたいのですが・・・。 省略したのがまずかったですね。貴方のifのプログラムのところの下の部分だけ書いたつもりでした。 if(untin % 10 != 0) untin = untin + 50 - untin % 10; これで、20のときは20、21のときは70となります。

kawa214
質問者

お礼

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

その他の回答 (4)

回答No.5

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

kawa214
質問者

お礼

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

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.3

> 運賃が100円の場合 > 35km→→150円 どういう計算で150円を導くのか、書いてみてください。 例) 35の1の位の5を切上げて40 10kmあたり50円なので、40kmでは200円 運賃100円に200円を足して、300円 とか。 正直、何をどう計算して150円が出るのかわかりません。 あと、説明文には「円」なのか「km」なのか、単位をつけると余計な誤解が生じません。 やりたいのは距離から運賃を求めたい事だと思いますが、そうなると変数はuntinの他にkyoriを使った方が簡単なのでは?

kawa214
質問者

お礼

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

回答No.2

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 問題の意図が違っていたらすみません。

kawa214
質問者

補足

ご返事有り難うございました。 説明が悪くてすいませんでした。 意図してるのは前者の方です。 もう一つ伺いたいのは、 今は20で70と50円加算されるんですが 20の時は20円のままで 21の時に70としたいのですが・・・。 すいませんが よろしくお願いします。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

例えば、35kmの場合の運賃を計算するとどうなりますか? その場合の計算手順をなるべく正確に書いてみてください。 その計算手順とプログラムとを比べると?

kawa214
質問者

補足

ご返事有り難うございました。 運賃が100円の場合 35km→→150円 39km→→150円 40km→→200円 43km→→200円 です。

関連するQ&A

  • if文の問題で…

    [問題]通話時間(秒単位)を入力し,通話料を計算し出力するプログラムを書け.なお,通話料は,以下のようにして計算するものとする. 通話時間≦基本通話時間( 1151 秒)  基本料金:882円 基本通話時間を 183 秒超える毎に 9 円ずつ加算 この問題がよくわかりません。一応自分で組んでみて実行してみたのですがどうやら出てくる答えが違うようです。(因みにC言語で書きました。)どなたか教えてくれないでしょうか??

  • エクセルと時間の計算

    エクセルと時間の計算 エクセル2003で以下のような表を作りました。 C列の金額には、「20分毎に200円加算される」金額を入力したいです。 できれば、A列の値と200円で計算したいのですが、どんな数式をいれれば いいでしょうか。20分単位で切り上げたいので、CEILING関数を使うのでしょうか。 教えてください。

  • 16進数 加算 減算 C言語

    今学校でC言語を学んでいるのですが、「16進数同士の加算・減算」を行う問題が出されました。 16進同士の計算となると'A'~'F'や桁上がりの対処など壁にぶち当たっています。 私は10進に直してから加算・減算し、また16進に直す方法しか思いつかず。16進のままで計算は出来ると思うのですが、分かりません。 教えて下さい。お願いします。

  • エクセル2003で勤務時間計算をしたいのですが、

    エクセル2003で勤務時間計算をしたいのですが、 現状は下記のように、H列の計算式が30分単位なのですが、 5分単位で給与計算して、小数点以下を切り捨てするには、 H列の計算式のどこを訂正するとよろしいでしょうか? ■現状(時給880円の場合) C列     D列     E列     F列     H列 始業時刻  終業時刻  休憩時間  実働時間  日給 10:00    17:30     0:45    6:45     5720円 H列の計算式 =IF(OR(C9="",D9=""),"",G9*HOUR(F9)+IF(AND(MINUTE(F9)>=0,MINUTE(F9)<=29),0,IF(AND(MINUTE(F9)>29,MINUTE(F9)<=59),G9/2,G9)))

  • VBでプログラムを作る

    Aの運賃が1.2kmまで550円 加算運賃が231mごとに70円 Bの運賃が1.2kmまで580円 加算運賃が199mごとに70円 Cの運賃が1.2kmまで650円 加算運賃が164mごとに80円 Dの運賃が1.2kmまで700円 加算運賃が147mごとに80円 深夜料金(深夜0時~4時)2割増し 迎車料金が1両1回ごとに160円 このプログラムを作りたいです 誰か教えてください デザインはこんな感じです

  • 時間距離併用制運賃について

    東京都では90秒ごとに80円加算ですが、これは10km以下の合計時間が90秒ごとに加算でしょうか?それとも、継続して10km以下が90秒超えると加算でしょうか? 信号待ちで50秒待たさせる→普通の速さで走る→次の信号でも50秒待たされる といった場合です。

  • タクシーの時間距離併用運賃の計算

    タクシーは、時間距離併用運賃が一般的です。 例えば2kmまで730円、以下280mごとに90円、また、速度10km/h以下1分45秒ごとに90円加算、などという場合についての計算方法について質問です。 全く渋滞なく4,800メートルを乗車すると、730+90×10=1,630円ですね。 一方、途中21箇所で30秒ずつ10km/h以下となった場合、累計で630秒となり、630秒÷1分45秒=6なので、90円×6=540円加算され、結局運賃は1,630+540=2,170円ということでよいのでしょうか。 また、メーターの表示としては、距離加算と時間加算のタイミングが近接した場合などは、僅かの間隔でポンポンッ!と2回連続したような形でアップするのでしょうか。

  • 給与所得控除額の関数

    給与所得控除額の計算で以下の関数式を作成しましたが1千万円以上の金額を入力すると違う数字が計算されてしまうので教えてください。 =IF(C3=0,"",IF(C3<=1625000,C3-650000,IF(C3<=1800000,ROUNDDOWN(C3/4,-3)*4*0.6,IF(C3<=3600000,ROUNDDOWN(C3/4,-3)*4*0.7-180000,IF(C3<6600000,ROUNDDOWN(C3/4,-3)*4*0.8-540000,IF(C3<=10000000,ROUNDDOWN(C3*0.9-1200000,0),IF(C3<=15000000,ROUNDDOWN(C3*0.95-1700000,0)*C3-2450000)))))

  • Python

    私はPython が初めてです、 今日料金計算をPython でしたいと思ったのですが出来なかったです。 是非ご授教ください。 問題は下記です。 電車の運賃を考える。10kmまでは150円、10~20Kmまでは1kmあたり30円、 21~40kmまでは1kmあたり20円…と加算するものとする。 距離を配列D、料金を配列Pを用いてあらわし、 35kmの時の料金を求める。(1km未満は切り上げる)  1 10     1 150 2 20     2  30 3 40     3  20 4 80     4  15 5 160    5  10 配列 D       配列 P

  • IF(B1="","",A1*B1)の合計

    セルC1に次の計算式が入っています。 IF(B1="","",A1*B1) 行10までコピーされています。 列Cを =C2+C4+C6+C8+C10 のうように個別に加算したいと思っています。 B列に空白がある場合、 #VALUE!のエラーとなります。 IF(B1="","",A1*B1) の計算式を残したままで 解決方法はありませんか?