Romzes,
таблица как формируется? |
вот пример
//данные с оценками от судей a = [ [1,5,1,1,2], [2,2,5,4,1], [3,3,3,2,3], [4,4,2,3,4], [5,1,4,5,5], [6,6,6,6,6] ]; //создаем массив для оценок, заполняем нулями var b = a.map(()=>[]); for (var i=0; i<a.length; i++){ for (var j=0; j<6; j++) b[i][j] = 0; } //тут считаем сколько каких оценок, b[0][0] - 1, b[0][1] - 2 и т.д. for (var i = 0; i < a.length; i++){ for (var j = 0; j < a[i].length; j++){ switch(a[i][j]){ case 1: b[i][0]++; break; case 2: b[i][1]++; break; case 3: b[i][2]++; break; case 4: b[i][3]++; break; case 5: b[i][4]++; break; case 6: b[i][5]++; break; } } } alert(`${b[0]}\n${b[1]}\n${b[2]}\nи т.д.`); в массиве b посчитанно сколько каких оценок, а дальше просто суммируешь |
Lion777,
а место итоговое как вычислить? |
если бы автор описал как вычисляется ))), то, возможно, бы и вычислил в этой странной системе оценок ))...
|
Lion777,
а зачем switch...case? //данные с оценками от судей a = [ [1,5,1,1,2], [2,2,5,4,1], [3,3,3,2,3], [4,4,2,3,4], [5,1,4,5,5], [6,6,6,6,6] ]; //создаем массив для оценок, заполняем нулями var b = a.map(()=>[]); for (var i=0; i<a.length; i++){ for (var j=0; j<6; j++) b[i][j] = 0; } //тут считаем сколько каких оценок, b[0][0] - 1, b[0][1] - 2 и т.д. for (var i = 0; i < a.length; i++){ for (var j = 0; j < a[i].length; j++){ b[i][a[i][j] - 1]++; } } alert(`${b[0]}\n${b[1]}\n${b[2]}\nи т.д.`); |
баг в версии 1.00 ))
|
Цитата:
Цитата:
Lion777, Dilettante_Pro, Цитата:
формула должна быть универсальной для любого количества участников и судей. ТС куда-то пропал ... |
Пошел другим путем, отсортировал значения массива первой строки, посчитал повторы, и потом суммировал предыдущую ячейку массива с текущей.
|
Цитата:
|
Вот что у меня получилось, правда только для одного участника. сейчас буду доделывать для много участников
var sumparticipant=6; //количество участников var sumrefferee=5; //количество судей var reffereeGet = document.getElementsByName('refferee'); var refferee=new Array(); // Присваеваем все input в массив refferee[j][i] metka1: for (var j=0; j<sumparticipant; j++) { refferee[j]=new Array(); for (var i=0; i<sumrefferee; i++) { refferee[j][i]=reffereeGet[i].value; if (typeof refferee[j][i] == 'undefined' || refferee[j][i] == null || refferee[j][i] == 0) { var arb=i+1; alert ('Судья '+arb+' не определил место'); break metka1; } } } // сортируем масив 1,2,3,4,5 и.т.д. function compareNumeric(a, b) { if (a > b) return 1; if (a < b) return -1; } refferee[0].sort(compareNumeric); //считаем количество повторов var result = {}; for (var i = 0; i < sumrefferee; ++i) { var a = refferee[0][i]; if (result[a] != undefined) ++result[a]; else result[a] = 1; } var result1 = {}; // выводим результат в масив result1[i] for (var key in result) { for (var i=1; i<sumparticipant+1; i++) { if (i==key) { result1[i]=result[key]; } } } // заменяем пустые значения на 0 for (var i=1; i<sumparticipant+1; i++) { if (typeof result1[i] == 'undefined' && result1[i] == null) { result1[i]=0; } } // суммируем предедущее значение с настоящим 2+1 for (var i=2; i<sumparticipant+1; i++) { result1[i]=result1[i-1]+result1[i]; } //выводим результаты for (var i=1; i<sumparticipant+1; i++) { document.getElementsByName('r')[i-1].value=result1[i]; } Код конечно громоздкий, но я новичек, простите если что :( :) |
Часовой пояс GMT +3, время: 11:26. |