繁体   English   中英

创建双区域的平均成绩

[英]Create average grade with double areas

我必须创建一个控制台应用程序。 编写一个 LepsiStudent 方法,对您的输入执行以下参数: 第一个学生的第一个学生字段的名称标记 第二个学生标记的第二个学生字段的名称 该方法计算这些学生的分数的算术平均值并列出哪些学生有更好的平均分。

在main方法中,准备marks和学生姓名两个字段。 然后调用 LepsiStudent 方法。

我编码这个,我不知道如何继续平均成绩有人可以帮助我吗?

{
    class Program
    {
        static void Main(string[] args)
        {
            double[] znamkyjan = { 2, 4 };
            double[] znamkydan = { 1, 5 };
            LepsiStudent(znamkyjan,znamkydan);
        }
        static void LepsiStudent (double [] znamky, double[] znamky2)
        {
            Console.WriteLine("Jan Novák");
            foreach (var znam in znamky)
            {
                //Console.WriteLine(znam);
                Console.WriteLine(znam / 2);
            }
            Console.WriteLine("Daniel Havlík");
            foreach (var znam2 in znamky2)
            {
                Console.WriteLine(znam2);
            }
        }
    }
}

要计算平均值,您需要对这些值求和,然后除以成绩数,并且您希望对每个学生都这样做。 我们可以用更少的变量来做到这一点,但这对于编程新手来说更具可读性。 我们检查所有第一个学生的成绩-将它们相加并除以,第二个学生也一样-然后我们比较并打印结果..

    static void LepsiStudent(double[] znamky, double[] znamky2)
    {
        double student1Sum = 0;
        double student1Avg = 0;
        double student2Sum = 0;
        double student2Avg = 0;

        foreach (var znam in znamky)
        {
            student1Sum += znam;
        }
        student1Avg = student1Sum / znamky.Length;

        foreach (var znam2 in znamky2)
        {
            student2Sum += znam2;
        }
        student2Avg = student2Sum / znamky2.Length;

        if (student1Avg > student2Avg)
        {
            Console.WriteLine("first student has the higher average");
        }
        else if (student1Avg == student2Avg)
        {
            Console.WriteLine("neither student has the higher average");
        }
        else
        {
            Console.WriteLine("second student has the higher average");
        }
    }

只是为了好玩,这与 linq 做同样的事情:

static void LepsiStudent(double[] znamky, double[] znamky2)
{
    double student1Avg = znamky.Sum() / znamky.Length; ;
    double student2Avg = znamky2.Sum() / znamky2.Length;
    string name = (student1Avg == student2Avg) ? "neither" : 
                  Math.Max(student1Avg, student2Avg) == student1Avg ? "first" : "second";
    Console.WriteLine($"{name} student has the higher average");
}

Linq库有一个内置的Average方法:

using System;
using System.Linq;
                    
public class Program
{
        public static void Main(string[] args)
        {
            double[] znamkyjan = { 2, 4, 5, 7 };
            double[] znamkydan = { 1, 5, 5, 9 };
            LepsiStudent(znamkyjan,znamkydan);
        }
        static void LepsiStudent (double [] znamky, double[] znamky2)
        {
            double m1 = znamky.Average();
            double m2 = znamky2.Average();
            Console.WriteLine("Jan Novák: " + m1);
            Console.WriteLine("Daniel Havlík: " + m2);          
        }
}

输出

Jan Novák: 4.5
Daniel Havlík: 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM