Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.11.2017, 22:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Romzes,
таблица как формируется?
Ответить с цитированием
  #12 (permalink)  
Старый 15.11.2017, 02:37
Кандидат Javascript-наук
Отправить личное сообщение для Lion777 Посмотреть профиль Найти все сообщения от Lion777
 
Регистрация: 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.
Ответить с цитированием
  #13 (permalink)  
Старый 15.11.2017, 09:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Lion777,
а место итоговое как вычислить?
Ответить с цитированием
  #14 (permalink)  
Старый 15.11.2017, 12:35
Кандидат Javascript-наук
Отправить личное сообщение для Lion777 Посмотреть профиль Найти все сообщения от Lion777
 
Регистрация: 04.11.2017
Сообщений: 117

если бы автор описал как вычисляется ))), то, возможно, бы и вычислил в этой странной системе оценок ))...

Последний раз редактировалось Lion777, 15.11.2017 в 12:54.
Ответить с цитированием
  #15 (permalink)  
Старый 15.11.2017, 12:55
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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и т.д.`);
Ответить с цитированием
  #16 (permalink)  
Старый 15.11.2017, 13:30
Кандидат Javascript-наук
Отправить личное сообщение для Lion777 Посмотреть профиль Найти все сообщения от Lion777
 
Регистрация: 04.11.2017
Сообщений: 117

баг в версии 1.00 ))
Ответить с цитированием
  #17 (permalink)  
Старый 15.11.2017, 13:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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

Lion777,
Dilettante_Pro,
Сообщение от Romzes
Теперь надо привести код так, чтоб я не зависил от количества выступающих (а вдруг их 40 или 100) и количества судей.


формула должна быть универсальной для любого количества участников и судей.


ТС куда-то пропал ...
Ответить с цитированием
  #18 (permalink)  
Старый 15.11.2017, 14:02
Интересующийся
Отправить личное сообщение для Romzes Посмотреть профиль Найти все сообщения от Romzes
 
Регистрация: 14.11.2017
Сообщений: 23

Пошел другим путем, отсортировал значения массива первой строки, посчитал повторы, и потом суммировал предыдущую ячейку массива с текущей.
Ответить с цитированием
  #19 (permalink)  
Старый 15.11.2017, 14:06
Интересующийся
Отправить личное сообщение для Romzes Посмотреть профиль Найти все сообщения от Romzes
 
Регистрация: 14.11.2017
Сообщений: 23

Сообщение от рони Посмотреть сообщение
у кого больше первых мест, у того и первое место если одинаково первых сравниваются "веса" за вторые места т.д.
Совершенно верно, подсчет идет именно так, но сейчас первая стадия посчитать количество мест. потом исходя и пойдет место в турнире но если совпадение - там 10 часных правил для продолжения
Ответить с цитированием
  #20 (permalink)  
Старый 15.11.2017, 14:12
Интересующийся
Отправить личное сообщение для Romzes Посмотреть профиль Найти все сообщения от Romzes
 
Регистрация: 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];
	
		}



Код конечно громоздкий, но я новичек, простите если что
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение значения элемента display (Sandr) Общие вопросы Javascript 15 08.02.2017 10:28
Как создать новый массив из массива внутри объекта? Enkille Общие вопросы Javascript 14 14.07.2016 18:26
Удаление элемента массива введенного с клавиатуры. Alex961 Общие вопросы Javascript 1 01.12.2015 22:39
Проверка массива на наличие элемента Скриптор Общие вопросы Javascript 16 10.09.2012 18:00
как найти и удалить массив из массива? FRIE Общие вопросы Javascript 8 14.03.2011 15:48