Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задача по JavaScript (https://javascript.ru/forum/misc/30820-zadacha-po-javascript.html)

wawandas 16.08.2012 23:17

Задачи по JavaScript
 
Реализуйте алгоритм, проверяющий если элемент матрицы MxN равен 0, тогда всем элементам данной строки и колонки присвоить 0.

var arr = [[1,2,3,4],
           [5,0,7,8], 
           [8,9,10,11]];


моё решение:

var arr = [[1,2,3,4],
           [5,0,7,8], 
           [8,9,10,11]];

		   
var vertical = 0;
var gorizont = 0;

//Циклы в которых мы находим 0 по вертикале и горизонтали

for (var i = 0; i < arr.length; ++i)   
	{  
	  for (var j = 0; j < arr[i].length; ++j)
		{
			if(arr[i][j] == 0)
				{
					vertical = j;
					gorizont = i;
				}
		}

	}
for (var g = 0; g < arr[gorizont].length; ++g)
	{
		arr[gorizont][g] = 0;
	}
	
for (var v = 0; v < arr.length; ++v)
	{
		for (var v2 = 0; v2 < arr[v].length; ++v2)
		{
			arr[v][vertical] = 0;
		}
	}
	
	
alert ('Ноль найден в строке: ' + gorizont + "\nв индексе: " + vertical);

	for (var key in arr)
		{
			document.write(arr[key] + '<br>');
		}


ПЫ.СЫ. опыта у меня мало, возможно его можно как-то оптимизировать, жду ваших предложений, спасибо за внимание :victory:

Deff 17.08.2012 00:32

<script type="text/javascript">
var arr = [[1,2,3,4,5], 
           [5,0,7,8,0], 
           [5,6,7,8,1],  
           [8,9,9,9,12]];

function Replacer(i,j) {
   for(var J in arr[i]){
      arr[i][J]=0;
   }
   for(var I in arr){
      arr[I][j]=0;
   }
}


TST_arr0=[];

for(var i in arr){

   for(var j in arr[i]){

      if(arr[i][j]==0){
	  TST_arr0.push([i,j]);
      }
   }

}

for(var i in TST_arr0){
  Replacer(TST_arr0[i][0],TST_arr0[i][1])
}

</script>


<script>
// Print
 var str=''
for(var i in arr){
    str+='['+arr[i].join(",")+']\n'
}
alert(str);
</script>

wawandas 17.08.2012 09:50

спасибо!;)

daima 17.08.2012 15:00

не совсем в тему, но как создать циклами массив массивов?

lord2kim 17.08.2012 15:08

daima,
var mas = [];
for (i=0; i < 10; i++) {
  mas[i] = [];
  for (j=0; j < 10; j++) {
     mas[i][j] = j;
  }
}
alert(mas);

daima 17.08.2012 15:45

а сразу : mas[0][0] = 10; ?
а если там будут не значения, а хеши, т.е mas=[[{qq:1,ww:2},...?

Deff 17.08.2012 16:04

daima,
mass=[];mass.push([10]);

alert(mass[0][0]);

daima 17.08.2012 16:21

Супер, спасибо, буду знать. а с хешами как?

wawandas 17.08.2012 16:41

Ребята! подскажите пожалуйста как извлечь уникальные значения из массива:

var array = [1,2,3,4,1,2,6,7];

заранее спасибо!

daima 17.08.2012 16:48

берм 1е значение и снова пробегаемся по массиву если нету - выводим и т.д.


Часовой пояс GMT +3, время: 15:42.