Удаление самого низкого сорта из 2D-массива и помещение оставшегося в новый 2D-массив - PullRequest
0 голосов
/ 09 июля 2020

У меня есть 2D-массив студентов, у каждого по 4 оценки. Я нашел способ найти самую низкую оценку для каждого ученика, но теперь мне нужно удалить самую низкую и поместить оставшиеся оценки в новый массив.

Код, который у меня сейчас есть, повторяет значения для каждой оценки и неточно. Кроме того, если у учащегося две самые низкие оценки (например, 64,3 и 64,3), как мы можем удалить только одну?

        double studentGrades[][] = {{100.0, 98.8, 78.9, 90.3},
        {76.6, 90.8, 78.9, 78.3},
        {78.7, 78.7, 91.2, 100.0},
        {65.9, 94.2, 81.6, 93.6},
        {78.7, 100.0, 93.2, 76.7}};
        
        double temp=0;
        double lowest=0;
        
        double finalGrades[][] = new double[5][3];
        
        for(int row = 0; row < studentGrades.length; row++) {
            lowest = studentGrades[row][0];
            for(int s = 0; s < studentGrades[0].length; s++) {
                temp = studentGrades[row][s];
                if(lowest > temp) {
                    lowest = temp;
                }
                else{
                    for(int m = 0; m < 3; m++) {
                        finalGrades[row][m] = studentGrades[row][s];
                    }
                }
            }
        }

В идеале массив finalGrades должен быть установлен следующим образом: {100.0, 98.8, 90.3}, {90.8, 78.9, 78.3}, {78.7, 91.2, 100.0}, {94.2, 81.6, 93.6}, {78.7, 100.0, 93.2}

1 Ответ

0 голосов
/ 09 июля 2020

попробуйте:

    for(int row = 0; row < studentGrades.length; row++) {
        int lowest_index = 0;
        for(int s = 1; s < studentGrades[0].length; s++) {
            if(studentGrades[row][s] < studentGrades[row][lowest_index]) {
                lowest_index = s;
            }
        }
        int m = 0;
        for(int s = 0; s < studentGrades[0].length; s++) {
            if(s != lowest_index) {
                finalGrades[row][m] = studentGrades[row][s];
                m++;
            }
        }
    }
...