English 中文(简体)
C#,If语句,Min和Max
原标题:
  • 时间:2008-12-26 00:22:12
  •  标签:

晚上好;我正在编写一个解决以下方程的代码。

X is size of device Y is quantity of device A is the denominator Z is the total diversified value

(X * Y)/ A = Z

这里是我不知道如何完成的部分。A的值是由Y的数量确定的。如果Y在3和6之间,则A = 0.7,如果Y在6和9之间,则A = 0.6;等等。

What function should I use to accomplish the above? Any help is greatly appreciated.

问候,

格雷格·鲁特利奇

最佳回答

在我看来,这有三种方法:

1) Formula calculation. Thus, you want to know what A is given Y which if you have enough data, e.g. taking your .7 for 3<=Y<6, .6 for 6

A = .8-(Y/3)/10.0;

如果 Y 不是 3 的倍数,您可能需要在 Y/3 部分使用 cast 或 truncate 函数,或者您可以使用以下方法去除小数部分:(Y - (Y % 3)) / 3

2)使用while循环结构来删除“Y”中的3个“s”,请注意while语句中的语句是缩写的,可能会使它不太清晰:

int Holder = Y, A=.8;
while (Holder > 0)
{
    A-= .1;
    Holder-= 3;
}

如果/否则。如果Y是有界的,则可以使用蛮力指定策略:

 If Y<3 
    A=.8
 Else if Y < 6 
    A=.7
 Else if Y < 9 
    A=.6

等等。

这是我考虑解决这样一个问题的顺序。

问题回答

你可以使用if语句和比较运算符(<=)来完成作业。

“and so on”的意思是什么?如果情况是有规律的,那么你可以使用一个公式,而不是一堆if语句。

if(Y <= 3.0)      A = ...; 
else if(Y <= 6.0) A = 0.7; 
else if(Y <= 9.0) A = 0.6;
...

假设A从0.8开始,每增加3个Y,A就减少0.1:

int temp = Y / 3;
float A = 0.8f - (temp / 10f);

好的,根据您刚刚发布的代码,我认为这就是您要找的内容:

if ((cb5_1.Checked)&&(cb5_2.Checked)&&(cb5_3.Checked))
{
    //if the first three text boxes are checked calculate based on the following. 
    decimal a, b, c, d, z;
    decimal aa, bb, cc, zz;
    a = decimal.Parse(cbx5_1a.Text);
    b = decimal.Parse(cbx5_2a.Text);
    c = decimal.Parse(cbx5_3a.Text);
    aa = decimal.Parse(cbx5_1q.Text);
    bb = decimal.Parse(cbx5_2q.Text);
    cc = decimal.Parse(cbx5_3q.Text);
    z = (aa+bb+cc);

    d = 0.8m - ((z / 3) / 10m);

    zz = ((a*aa)+(b*bb)+(c*cc))*d;

    tb5_atotal.Text = Math.Round(z,2).ToString();

如果值是在列表中预定义的,而不是通过函数创建的。

基本上,每个对象都有最小值、最大值、值、最小链接和最大链接。

跟随链接直至找到目标值或空指针。

if Y <= maxValue then 
    if Y >= minValue then
        return value
    else
        follow minLink
else 
    follow maxLink




相关问题
热门标签