Сравнение минимального и максимального из n списков массивов для получения и общего минимального и максимального - PullRequest
0 голосов
/ 20 мая 2018

Мне нужно получить общий минимум и максимум из набора arraylists.каждый массив состоит из 5 оценок ученика.

Количество учеников и введенные оценки (сделано в static void main):

Console.WriteLine("Input the number of students: ");
int n = int.Parse(Console.ReadLine());

Student[] students = new Student[n];

for (int i = 0; i < n; i++)
{
    students[i] = new Student();
    for (int j = 0; j < 5; j++)
    {
        Console.WriteLine($"Enter grade {j} for student {i}: ");
        double grade = double.Parse(Console.ReadLine());
        students[i].addGrade(grade);
    }
}

МассивList оценок создается в классе Student:

private ArrayList grades;

public Student()
{
    grades = new ArrayList();
}

public void addGrade(double val)
{
    grades.Add(val);
}

Затем минимальные и максимальные значения каждого студента определяются с использованием сортировки в функциях getMin и getMax соответственно.Эти функции находятся в классе ученика:

public object getMax()
{
    ArrayList sortArrayList = grades;
    sortArrayList.Sort();
    sortArrayList.Reverse();

    var max = sortArrayList[0];

    return max;
}

public object getMin()
{
    ArrayList sortArrayList = grades;
    sortArrayList.Sort();

    var min = sortArrayList[0];

    return min;
}

Мне было сказано перебрать каждую из них, извлечь для каждой из них минимальное и максимальное значения, а затем сравнить их.Я получил минимальное и максимальное значения для каждого, но для сравнения минимальных и максимальных значений arrayLists у меня есть логический блок.

1 Ответ

0 голосов
/ 20 мая 2018

Я держу этот ответ открытым из-за рекомендации OP.

Я бы предложил List<Student> и оценки до List<int> или List<double>, используя LINQ:

Максимальная оценка на одного учащегося:

grades.Max();

Вы можете позволить Student.getMax() вернуть эту строку.

Общий максимум:

var overallMax = students.OrderByDescending(st=> st.getMax())
                 .First().getMax();

Для общего минимума:

в Student.getMin() просто вернуть grades.Min()

Тогда

var overallMin = students.OrderByAscending(st=> st.getMin())
                 .First().getMin();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...