数组

时间:2015-11-30 22:17:46

标签: c# .net

我有两个双打数组。例如:{1,2,3} {4,5,6}例如,我们使用(x,y)坐标为(1,4),(2,5)和(3,6)。因此,此示例中有3个数据点。我们需要计算所有点之间的斜率,并将斜率存储为最大绝对值。为此,我在'for'循环中有一个带'for'循环的函数。当我在Main中使用它时,我的代码成功计算出最大绝对值斜率。

我们需要找到最大斜率出现的位置并打印出array2中的相应位置。我做到了。

最后还有第三个数组。我们需要计算直到最大斜率中使用的第一个点的数字的平均值,最大斜率中使用的第一个和第二个点之间的数字的平均值以及来自第二个点的数字的平均值。用于最大斜率到数组的末尾。

这是否需要在main中完成,还是需要自己的方法?

public static void Main()
{
    List<double> Array1 = new List<double>();
    List<double> Array2 = new List<double>();
    List<double> Array3 = new List<double>();

    Array1.Add(Convert.ToDouble(columns[0]));
    Array2.Add(Convert.ToDouble(columns[1]));
    Array3.Add(Convert.ToDouble(columns[1]));


    int[] positions = GreatestSlopeLocation(Array1, Array2);

    Console.WriteLine("The Location of the max slope is {0} {1}", 
        Array2[positions[0]], Array2[positions[1]]);
}
static int[] GreatestSlopeLocation(List<double> x, List<double> y)
{
    int size = x.Count;
    double maxSlope = Double.MinValue; // don't set this to 0
    // consider case when all slopes are  negative
    // 
    int index1 = 0;
    int index2 = 0;

    for (int i = 0; i < size; i++)
    {
        for (int j = i + 1; j < size; j++)
        {
            double slope = Math.Abs((y[j] - y[i]) / (x[j] - x[i]));
            if (slope > maxSlope) // I think you want > instead of < here
            {
                maxSlope = slope;
                index1 = i;
                index2 = j;
            }
        }
    }
    return new int[]{index1, index2};
}

0 个答案:

没有答案