C#中的简单Windows应用程序混乱

时间:2015-10-10 15:23:53

标签: c# arrays if-statement math

我的节目搞砸了,我需要帮助! 我已经尝试过c ++,而c#对我来说是新的。大学的专家说c#就像c ++一样,所以我试图拓宽我对其他编程语言的看法,而不是c ++。我试图制作一个程序来计算Windows应用程序中5个输入数字中最低3个数字的总和。

查看windows应用程序的设计在这里: Design View

我乱糟糟的代码:

namespace Array_excercise
{
   public partial class Form1 : Form
   {
    public Form1()
    {
        InitializeComponent();
    }
    int[] nums = { 0, 0, 0, 0, 0 };
    int[] lownum = { 0, 0, 0,0,0 };
    int[] highnum = { 0, 0, 0, 0, 0 };
    private void computbtn_Click(object sender, EventArgs e)
    {
        nums[0] = Int32.Parse(textBox1.Text);
        nums[1] = Int32.Parse(textBox2.Text);
        nums[2] = Int32.Parse(textBox3.Text);
        nums[3] = Int32.Parse(textBox4.Text);
        nums[4] = Int32.Parse(textBox5.Text);
        int result;
        for (int a = 0; a <= 4; a++)
        {
            if (nums[a] < nums[0])
                lownum[a] = nums[a];
            else if (nums[a] < nums[1])
                lownum[a] = nums[a];
            else if (nums[a] < nums[2])
                lownum[a] = nums[a];
            else if (nums[a] < nums[3])
                lownum[a] = nums[a];
            else if (nums[a] < nums[4])
                lownum[a] = nums[a];
            else
                highnum[a] = nums[a];
        }
    }
}

之后,我不知道如何计算总和。 现在,我特别学习如何使用if和for循环函数的数组。 如果在这个程序中使用这些功能,我将非常感激。

我提前谢谢你了!

4 个答案:

答案 0 :(得分:3)

使用LINQ

var lowSum = nums.OrderBy(n => n).Take(3).Sum();

答案 1 :(得分:1)

可以使用静态Sort()方法对一维数组进行排序。

https://msdn.microsoft.com/en-us/library/system.array.sort(v=vs.110).aspx

所以在你的例子中,它会像:

// populate the array
nums[0] = Int32.Parse(textBox1.Text);
nums[1] = Int32.Parse(textBox2.Text);
nums[2] = Int32.Parse(textBox3.Text);
nums[3] = Int32.Parse(textBox4.Text);
nums[4] = Int32.Parse(textBox5.Text);

// sort the array from lowest to highest
Array.Sort(nums);

// declare a variable to hold the sum
int sum = 0;

// iterate over the first (smallest) three
for(int i=0;i<3; i++)
{
   sum += nums[i];
}

Console.WriteLine("The sum of the three smallest is: " + sum);

答案 2 :(得分:0)

尝试使用一些排序算法,例如冒泡排序来对数组进行排序:

int c = -1;
for (int i = array.Length; i > 1; i--)
{
    for (int j = 0; j < i - 1; j++)
    {
        c = j;   
        if (array[j] < array[j + 1])
        {
            int temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
        }
    }   
}

获得已排序的数组后,您可以得到前3个最小数字的总和:

int sum = 0;
for(int i=0; i < 3; i++)
{
    sum += array[i];
}

答案 3 :(得分:0)

将所有值放入&#34; nums&#34;。您可以使用以下代码设置两个数组的值。

List<int> tempnums = nums.ToList(); //Creates a List from "nums" array.

tempnums.Sort(); //Sorts the List from smallest number to highest

int[] lownums = tempnums.ToArray(); //Creates an array from "tempnums" List.

tempnums.Reverse();//Reverses the values of "tempnums" so that the numbers are highest to lowest.

int[] highnums = tempnums.ToArray();//Creates an array from "tempnums" List.

然后有两种方法可以得到结果。

int result = 0;
for(int i = 1; i <= 3; i++)
{
    result += nums[i];
}

或者

int result = nums[0]+nums[1]+nums[2];