Агрегированное число из 3 столбцов в datagridview - PullRequest
0 голосов
/ 04 января 2019
 private void button4_Click(object sender, EventArgs e)
    {
        double sum = 0.3;
        double sum1 = 0.4;
        double sum2 = 0;
        for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
        {
            sum = sum * int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());
            sum = sum * int.Parse(dataGridView1.Rows[i].Cells[5].Value.ToString());
            sum1 = sum1 * int.Parse(dataGridView1.Rows[i].Cells[6].Value.ToString());
            sum2 = sum1 + sum2;
        }

        textBox8.Text = sum2.ToString();
    }

Я хочу рассчитать агрегированную оценку с 3 элементами оценки с разными весовыми процентами. Курсовая работа1 составляет 30%, курсовая работа 2 составляет 30%, а итоговый экзамен составляет 40%. Нам также нужно разделить его на количество объектов в массиве. Есть ли кто-нибудь, кто может помочь мне с моим кодом для решения этой проблемы?

1 Ответ

0 голосов
/ 04 января 2019

Если бы это был я, я мог бы создать класс для представления учащегося и присвоить ему свойство для Name, а также для каждого экзаменационного балла. Затем я бы добавил свойство, которое дает рассчитанную совокупную оценку на основе процентов.

Далее мы можем заполнить список этих Student объектов, основываясь на данных в вашем DataGridView, и тогда легко отобразить агрегаты и среднее значение по классу.

Например, класс Student может выглядеть следующим образом:

public class Student
{
    public string Name { get; set; }
    public int Course1Score { get; set; }
    public int Course2Score { get; set; }
    public int FinalExamScore { get; set; }
    public double AggregateScore => Course1Score * .3 + Course2Score * .3 +
                                    FinalExamScore * .4;
}

И затем мы можем заполнить их список и вывести наши результаты:

private void button4_Click(object sender, EventArgs e)
{
    var students = new List<Student>();

    for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
    {
        students.Add(new Student
        {
            Name = $"student{i + 1}",
            Course1Score = int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString()),
            Course2Score = int.Parse(dataGridView1.Rows[i].Cells[5].Value.ToString()),
            FinalExamScore = int.Parse(dataGridView1.Rows[i].Cells[6].Value.ToString()),
        });
    }

    string results = string.Join(Environment.NewLine,
        students.Select(s => $"{s.Name} had an aggregate score of {s.AggregateScore}"));

    results += "\n\nThe average aggregated score is: " +
                students.Average(student => student.AggregateScore);

    MessageBox.Show(results);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...