在2D数组中添加最大值和最小值,不包括最高和最低整数

时间:2016-04-08 11:56:38

标签: c#

我有一个2D数组,我想单独输出每个数组的值的总和,但也要从该总和的计算中排除最大值和最小值。 E.G如果array = {{2,3,4,5},{4,5,6,7}}。那么代码应该从第一个数组中排除2和5,只需添加和输出9(3 + 4),然后输出11用于第二个数组(5 + 6)。此外,如果数组包含2个或更多的最低值和两个或更多的最高值,它应该只排除其中的一个,但是如果数组= {2,2,3,4,5,6,6,那么许多相似的值EG代码应该输出20(2 + 3 + 4 + 5 + 6)。

我自己尝试编码,但我的价值观没有出现。我认为它可能与我的得分等于0有关,但我不知道如何宣布它。

任何帮助将不胜感激。

结果数组存储在main

static void JudgesTotal(int[,] results)
{
    int Minimum = results[0, 0];
    int Maximum = results[0, 0];
    int score_total = 0;

    for (int i = 0; i < results.GetLength(0); i++)
    {
        score_total = score_total + results[i, j];
        if (Minimum > results[i, j])
        {
            Minimum = results[i, j];
        }

        if (Maximum < results[i, j])
        {
            Maximum = results[i, j];
        }

        score_total = score_total - (Maximum - Minimum);

        if (results[i, j] > results[i, j] + 1)
        {
            Console.Write("{0}", score_total);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码存在许多问题。首先,您不要在下一个数组的开头重置MinimumMaximum。其次,您不会在每个新阵列的开头重置score_total。接下来,您对最大值的比较是错误的。最后你必须在内循环结束后减去最小值和最大值。以下是如何解决所有问题的示例。 此外,我不清楚你为什么if(result[i,j] > result[i,j] + 1)在那里,因为true result[i,j] int.MaxValue只有for(int i = 0; i < results.GetLength(0); i++) { if(results.GetLength(1) <= 2) { //There are either 0 items which would sum to 0 //Or 1 item which is both the min and max and the sum should be 0 //Or 2 items where one is the min and the other the max and the sum should be 0 Console.WriteLine(0); continue; } long min = results[i,0]; long max = results[i,0]; long total = 0; for(int j = 0; j < results.GetLength(1); j++) { total += results[i,j]; if(results[i,j] < min) min = results[i,j]; if(max < results[i,j]) max = results[i,j]; } total -= (min + max); Console.WritLine(total); }

min

注意我创建了maxtotal和类型long的{​​{1}}以避免潜在的溢出。 total因为总结足够的整数或大整数可能会导致值不适合int。更糟糕的情况是一个大小为int.MaxValue的数组,其中所有项都是int.MaxValuetotal应该是int.MaxValue * int.MaxValue,这将适合longminmaxlong,因为我们添加int.MaxValue + int.MaxValue int不适合long,但适合int.MinValue。同样的想法也适用于form = MyForm(instance = new_item)