2013-02-20 4 views
-1

У меня возникла проблема с этим вопросом:Расчет среднего?

Учитывая список результатов тестирования (каждый с датой тестирования, идентификатором студента и счетом ученика); верните итоговый результат для каждого учащегося. Итоговый счет ученика рассчитывается как среднее из его 5 самых высоких результатов теста. Вы можете предположить, что у каждого ученика есть как минимум 5 баллов.

Теперь, вот что. Я не хочу ответа.

Я пробовал хеширование, но хеширование может предоставить ключ с адресами, поэтому он не работает для меня.

Я думал о том, чтобы использовать список массивов, итерацию мысли, чтобы вычислить среднее значение и вернуть первую пятерку, но как я могу присвоить номера студенту?

Скажите, что я хочу, чтобы результат был: Майк, 15. Разве это не вопрос? Чтобы получить идентификатор студента и среднее число. Пожалуйста, помогите мне с некоторыми подсказками, я учусь.

ответ

3

Просто сортировать результаты испытаний по студенческому билету (в качестве основного ключа сортировки) и нисходящей счет (минор рода) затем пройти через коллекцию следующим образом (псевдо-код):

lastId = element[0].Id - 1 
for each record in element[]: 
    if record.Id != lastId: 
     lastId = record.Id 
     counter = 5 
     sum = 0 
    if counter > 0: 
     sum = sum + record.score 
     counter = counter - 1 
     if counter == 0: 
      print "Student ", record.Id, " got average of ", (sum/5) 

Поскольку данные сортируется, вы знаете, что все баллы для данного учащегося вместе и что первые пять из них самые высокие. Следовательно, приведенный выше код позволит вам полностью разобраться.

Помните, что это зависит от вашего правила «каждый студент имеет как минимум пять результатов». Без этого вам придется изменить средний расчетный код и, возможно, сделать какой-то пост-рабочий цикл для последнего ученика.

0

Использование объектно-ориентированных принципов. Вот несколько советов. Создайте тестовый класс для представления каждого теста.

class Test 
{ 
    Date date; 
    Student s;   //store instance of student- has a relationship to Student 
    double[] scores;  //store test scores 
    double finalscore; //final score 
    Test() { 
    //Initialize scores array and assign default values (0) 
    } 
} 

Создайте класс учеников для представления каждого учащегося.

class Student 
{ 
    String name; 
    int id; 
} 

Создайте список массивов тестов.

List<Test> tests = new ArrayList<Test>(); 

Теперь это только вопрос прохождения тестов и поиск среднего значения для хранения в финале.

+0

Вы можете улучшить дизайн, перемещая все атрибуты 'Test' в класс' Student' и удаляя ненужные данные, такие как 'Date' и' finalscore'. –

Смежные вопросы