質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
HAL

質問です

#1

投稿記事 by HAL » 16年前

URLのが宿題です。

大学の宿題なのですが、水道料金の使用料金について

一応プログラムを作成しました。

添付ファイルです。しかし

if文の使い方がいまいち分からなく、うまく起動しているか分かりません。

大学ではC言語について変数やifや演算式を習いました。

よろしくお願いします。

でんすけ

Re:質問です

#2

投稿記事 by でんすけ » 16年前

なにをどうする宿題なんですか?

toyo

Re:質問です

#3

投稿記事 by toyo » 16年前

y = x / 2 + 0.5 ; //使用量の分割//
z = x / 2 - 0.5 ;
分割するのはなぜでしょうか
xが18だとyが9.5でzが8.5になるのでどのif文にもあてはまらなくなります

でんすけ

Re:質問です

#4

投稿記事 by でんすけ » 16年前

#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;
}

non

Re:質問です

#5

投稿記事 by non » 16年前

使用量が、整数値に限るとは題意にないのですが、例からすれば、整数として考えろと言うことなのでしょうか?
さて、分割の式ですが、
int y,z; にして
y = x / 2.0 + 0.5 ;
z = x / 2 ;
ですね。
こういうのもありですか。
y = x / 2;
z = y + (x % 2);

さて、ifについては、少し、教科書を読んで、条件演算子を勉強した方がいいですね。
また、yとzの計算を一度にやってしまおうというのに、無理があります。
同じ事を、2回やるのだから、関数を習ったなら、使った方がいいし、習ってないなら、
同じ事を2回やるようにすべきでしょう。

HAL

Re:質問です

#6

投稿記事 by HAL » 16年前

ありがとうございます
if文では、yとzは一つ一つ考えた方がいいんですね。

ご指導がなかったら永久に分かりませんでした。

ほんとうに感謝です。

閉鎖

“C言語何でも質問掲示板” へ戻る