14.11.2017, 22:43
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Romzes,
таблица как формируется?
|
|
15.11.2017, 02:37
|
Кандидат Javascript-наук
|
|
Регистрация: 04.11.2017
Сообщений: 117
|
|
вот пример
//данные с оценками от судей
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, 15.11.2017 в 02:45.
|
|
15.11.2017, 09:57
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Lion777,
а место итоговое как вычислить?
|
|
15.11.2017, 12:35
|
Кандидат Javascript-наук
|
|
Регистрация: 04.11.2017
Сообщений: 117
|
|
если бы автор описал как вычисляется ))), то, возможно, бы и вычислил в этой странной системе оценок ))...
Последний раз редактировалось Lion777, 15.11.2017 в 12:54.
|
|
15.11.2017, 12:55
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
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и т.д.`);
|
|
15.11.2017, 13:30
|
Кандидат Javascript-наук
|
|
Регистрация: 04.11.2017
Сообщений: 117
|
|
баг в версии 1.00 ))
|
|
15.11.2017, 13:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Сообщение от Lion777
|
если бы автор описал как вычисляется ))),
|
Сообщение от Romzes
|
программа должна посчитать кому судьи больше отдали первых, вторых и .т.д. мест.
|
у кого больше первых мест, у того и первое место если одинаково первых сравниваются "веса" за вторые места т.д.
Lion777,
Dilettante_Pro,
Сообщение от Romzes
|
Теперь надо привести код так, чтоб я не зависил от количества выступающих (а вдруг их 40 или 100) и количества судей.
|
формула должна быть универсальной для любого количества участников и судей.
ТС куда-то пропал ...
|
|
15.11.2017, 14:02
|
Интересующийся
|
|
Регистрация: 14.11.2017
Сообщений: 23
|
|
Пошел другим путем, отсортировал значения массива первой строки, посчитал повторы, и потом суммировал предыдущую ячейку массива с текущей.
|
|
15.11.2017, 14:06
|
Интересующийся
|
|
Регистрация: 14.11.2017
Сообщений: 23
|
|
Сообщение от рони
|
у кого больше первых мест, у того и первое место если одинаково первых сравниваются "веса" за вторые места т.д.
|
Совершенно верно, подсчет идет именно так, но сейчас первая стадия посчитать количество мест. потом исходя и пойдет место в турнире но если совпадение - там 10 часных правил для продолжения
|
|
15.11.2017, 14:12
|
Интересующийся
|
|
Регистрация: 14.11.2017
Сообщений: 23
|
|
Вот что у меня получилось, правда только для одного участника. сейчас буду доделывать для много участников
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];
}
Код конечно громоздкий, но я новичек, простите если что
|
|
|
|