ページ 1 / 1
質問です
Posted: 2009年9月17日(木) 03:01
by HAL
URLのが宿題です。
大学の宿題なのですが、水道料金の使用料金について
一応プログラムを作成しました。
添付ファイルです。しかし
if文の使い方がいまいち分からなく、うまく起動しているか分かりません。
大学ではC言語について変数やifや演算式を習いました。
よろしくお願いします。
Re:質問です
Posted: 2009年9月17日(木) 06:53
by でんすけ
なにをどうする宿題なんですか?
Re:質問です
Posted: 2009年9月17日(木) 07:07
by toyo
y = x / 2 + 0.5 ; //使用量の分割//
z = x / 2 - 0.5 ;
分割するのはなぜでしょうか
xが18だとyが9.5でzが8.5になるのでどのif文にもあてはまらなくなります
Re:質問です
Posted: 2009年9月17日(木) 07:28
by でんすけ
#include <stdio.h>
int main(void)
{
int x,a,b,ryokin1,ryokin2,ryokin; //xが使用量 ryoukin が最終的な料金//
double y,z;
while( 1 )
{
printf("使用量は?");
scanf("%d",&x);
y = x / 2 + 0.5 ; //使用量の分割//
z = x / 2 - 0.5 ;
if(y<=9 , z<=9){ //使用料が9以下のとき//
a=0;
b=0;
}
else if( ( 9<=y && y<=15 ) , ( 9<=z && z <=15) )
{ //使用料が9以上15以下のとき//
a = (15 - (int)y) * 75;
b = (15 - (int)z) * 75;
}
else if( (16<=y && y<=20 ) , (16<=z && z<=20 ) )
{ //使用料が16以上20以下のとき//
a = 525 + ((int)y - 15) ;
b = 525 + ((int)z - 15) ;
}
else if( ( 21<=y && y<=30) , ( 21<=z && z<=30 ) )
{ //使用料が21以上30以下のとき//
a = 525 + 400 + ((int)y - 20) ;
b = 525 + 400 + ((int)z - 20) ;
}
else if( ( 31<=y && y<=50 ) , ( 31<=z && z<=50) )
{ //使用料が31以上50以下のとき//
a = 525 + 400 + 900 + ( (int)y - 30);
b = 525 + 400 + 900 + ( (int)z - 30);
}
else if( ( 51<=y && y<=100 ) , ( 51<=z && z<=100 ) )
{ //使用料が51以上100以下のとき//
a = 525 + 400 + 900 + 2000 + ( (int)y - 50 );
b = 525 + 400 + 900 + 2000 + ( (int)z - 50 );
}
else if( ( 101<=y && y<=300 ) , ( 101<=z && z<=300 ) )
{ //使用料が101以上300以下のとき//
a = 9825 + ( (int)y - 100);
b = 9825 + ( (int)z - 100);
}
else if( ( 301<=y && y<=1000 ) , ( 301<=z && z<=1000 ) )
{ //使用料が301以上1000以下のとき//
a = 35825 + ( (int)y - 300);
b = 35825 + ( (int)z - 300);
}
else if( y>=1000 , z>=1000 )
{ //使用料が1001以上//
a = 144325 + ( (int)y - 1000);
b = 144325 + ( (int)z - 1000);
}
ryokin1 = 500 + a; //料金半分1//
ryokin2 = 500 + b; //料金半分2//
ryokin1 = (int)(ryokin1*1.05); //消費税計算//
ryokin2 = (int)(ryokin2*1.05); //消費税計算//
ryokin = ryokin1 + ryokin2;
printf("水道料金は%d円です。\n",ryokin);
}
return 0;
}
Re:質問です
Posted: 2009年9月17日(木) 12:54
by non
使用量が、整数値に限るとは題意にないのですが、例からすれば、整数として考えろと言うことなのでしょうか?
さて、分割の式ですが、
int y,z; にして
y = x / 2.0 + 0.5 ;
z = x / 2 ;
ですね。
こういうのもありですか。
y = x / 2;
z = y + (x % 2);
さて、ifについては、少し、教科書を読んで、条件演算子を勉強した方がいいですね。
また、yとzの計算を一度にやってしまおうというのに、無理があります。
同じ事を、2回やるのだから、関数を習ったなら、使った方がいいし、習ってないなら、
同じ事を2回やるようにすべきでしょう。
Re:質問です
Posted: 2009年9月17日(木) 17:18
by HAL
ありがとうございます
if文では、yとzは一つ一つ考えた方がいいんですね。
ご指導がなかったら永久に分かりませんでした。
ほんとうに感謝です。