Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив и увеличение значения Элемента массива (https://javascript.ru/forum/misc/71385-massiv-i-uvelichenie-znacheniya-ehlementa-massiva.html)

рони 14.11.2017 22:43

Romzes,
таблица как формируется?

Lion777 15.11.2017 02:37

вот пример
//данные с оценками от судей
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 посчитанно сколько каких оценок, а дальше просто суммируешь

рони 15.11.2017 09:57

Lion777,
а место итоговое как вычислить?

Lion777 15.11.2017 12:35

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

Dilettante_Pro 15.11.2017 12:55

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и т.д.`);

Lion777 15.11.2017 13:30

баг в версии 1.00 ))

рони 15.11.2017 13:50

Цитата:

Сообщение от Lion777
если бы автор описал как вычисляется ))),

Цитата:

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

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

Lion777,
Dilettante_Pro,
Цитата:

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



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


ТС куда-то пропал ...

Romzes 15.11.2017 14:02

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

Romzes 15.11.2017 14:06

Цитата:

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

Совершенно верно, подсчет идет именно так, но сейчас первая стадия посчитать количество мест. потом исходя и пойдет место в турнире но если совпадение - там 10 часных правил для продолжения

Romzes 15.11.2017 14:12

Вот что у меня получилось, правда только для одного участника. сейчас буду доделывать для много участников

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.