プログラマメモ2 - programmer no memo2

食塩水の濃度 2008/04/12

食塩水の濃度の問題です。

目的の濃度になるための食塩の量、蒸発させる水の量、加える水の量を求めます。

濃度算というようですね。



シナリオ
目的の食塩水の濃度にするために、必要な食塩の量、蒸発させる水の量、加える水の量を求める関数を作成してください。引数の値は常に正しいものがわたされます。


全然、頭を使わず、愚直に式をプログラムにしています。
Javaです。

public class SaltWater {

/**
* @param args
*/
public static void main(String[] args) {

System.out.println(calculateSalt(0.1, 0.25, 500));
System.out.println(calcEvaporatedWater(0.1, 0.25, 500));
System.out.println(calcWater(0.1, 0.05, 500));
}

/**
* 必要な食塩を求めます。
* @param per 現在の濃度
* @param to_per 作り出す濃度
* @param saltWater 現在の食塩水の量
* @return
*/
public static double calculateSalt(double per, double to_per, double saltWater){
// 現在の塩の量
double s = saltWater * per;
double w = saltWater * (1 - per);
double x = ((w+s)*to_per-s)/(1 - to_per);

return x;
}

/**
* 蒸発させる水の量を求めます。
* @param per 現在の濃度
* @param to_per 作り出す濃度
* @param saltWater 現在の食塩水の量
* @return
*/
public static double calcEvaporatedWater(double per, double to_per, double saltWater){
// 現在の塩の量
double s = saltWater * per;
double w = saltWater * (1 - per);
double x = s + w -(s/to_per);
return x;
}

/**
* 加える水の量を求めます。
* @param per 現在の濃度
* @param to_per 作り出す濃度
* @param saltWater 現在の食塩水の量
* @return
*/
public static double calcWater(double per, double to_per, double saltWater){
// 現在の塩の量
double s = saltWater * per;
double x = s/to_per - saltWater;
return x;
}
}

: