Алгоритм получения значения из таблицы - C#
Формулировка задачи:
Здравствуйте. Есть таблица значений, сверху расположена температура, слева плотность, то есть нужно выбрать значение в зависимости от температуры и плотности (см. рисунок приложенный).
То есть, допустим у меня температура 12 °С и плотность 800, я должен получить значение 0,958. Можно конечно все на if'ах написать, но это говнокод какой то будет. Подскажите, в каком направлении думать?
Решение задачи: «Алгоритм получения значения из таблицы»
textual
Листинг программы
double T = 6.0;//исходная температура - откуда-то вводится
int P = 760;//исходное давление - откуда-то вводится
//вводить полностью не будем, проверять правильность заполнения исходных данных также не будем!!
string[] temp = { "0,0-4,9", "5,0-9,9" };
int[] pres = { 750, 760, 770 };
double[,] coef = {
{1.082, 1.08},
{1.054, 1.052},
{1.027, 1.025}
};
int t = -1; //индекс по температуре
int p = -1; //индекс по давлению
//ищем номер колонки
for (int i = 0; i < temp.Length; i++)
{
int k = temp[i].IndexOf('-');
double N = Convert.ToDouble(temp[i].Substring(0, k));
double E = Convert.ToDouble(temp[i].Substring(k + 1));
if (T >= N && T <= E) { t = i; break; }
}
//ищем номер строки
for (int i = 0; i < pres.Length; i++)
if (P<=pres[i]) {p = i; break;}
//выбираем значение
if (t == -1 || p == -1) MessageBox.Show("Указанные значения не найдены");
else MessageBox.Show("Требуемый коэффициент равен " + coef[p, t].ToString());