16.08.2012, 23:17
|
|
Аспирант
|
|
Регистрация: 05.08.2012
Сообщений: 58
|
|
Задачи по 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>');
}
ПЫ.СЫ. опыта у меня мало, возможно его можно как-то оптимизировать, жду ваших предложений, спасибо за внимание
Последний раз редактировалось wawandas, 19.08.2012 в 16:59.
|
|
17.08.2012, 00:32
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<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>
Последний раз редактировалось Deff, 17.08.2012 в 11:19.
|
|
17.08.2012, 09:50
|
|
Аспирант
|
|
Регистрация: 05.08.2012
Сообщений: 58
|
|
спасибо!
|
|
17.08.2012, 15:00
|
Аспирант
|
|
Регистрация: 01.08.2012
Сообщений: 59
|
|
не совсем в тему, но как создать циклами массив массивов?
|
|
17.08.2012, 15:08
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
daima,
var mas = [];
for (i=0; i < 10; i++) {
mas[i] = [];
for (j=0; j < 10; j++) {
mas[i][j] = j;
}
}
alert(mas);
|
|
17.08.2012, 15:45
|
Аспирант
|
|
Регистрация: 01.08.2012
Сообщений: 59
|
|
а сразу : mas[0][0] = 10; ?
а если там будут не значения, а хеши, т.е mas=[[{qq:1,ww:2},...?
Последний раз редактировалось daima, 17.08.2012 в 16:02.
|
|
17.08.2012, 16:04
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
daima,
mass=[];mass.push([10]);
alert(mass[0][0]);
|
|
17.08.2012, 16:21
|
Аспирант
|
|
Регистрация: 01.08.2012
Сообщений: 59
|
|
Супер, спасибо, буду знать. а с хешами как?
|
|
17.08.2012, 16:41
|
|
Аспирант
|
|
Регистрация: 05.08.2012
Сообщений: 58
|
|
Ребята! подскажите пожалуйста как извлечь уникальные значения из массива:
var array = [1,2,3,4,1,2,6,7];
заранее спасибо!
|
|
17.08.2012, 16:48
|
Аспирант
|
|
Регистрация: 01.08.2012
Сообщений: 59
|
|
берм 1е значение и снова пробегаемся по массиву если нету - выводим и т.д.
|
|
|
|