Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.02.2007, 21:31
MOHCTEP вне форума Посмотреть профиль Отправить личное сообщение для MOHCTEP Найти все сообщения от MOHCTEP
  № 1  
Ответить с цитированием
MOHCTEP

Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
По умолчанию Модификация массива и ... сортировка чтоли?!

Доброе время всем! Вот проблемы образовались - прошу помощи.
1. Почему-то 2 массив "column_arr" содержит чушь, хотя трейсы в теле процедуры вроде верные.
Код:
//Этот массив, собственно, и надо уработать
// Тут 2 варианта массива и переменных: покороче и подлиннее. Переместите комменты...
/*
var cross_arr:Array=[1,1,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
					 0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,6,0,4,6,6,0,0,0,0,2,0,
					 0,0,0,0,0,1,0,0,0,6,0,4,6,6,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,6,0,4,4,4,
					 4,0,5,5,0,0,0,0,0,0,0,0,0,0,0,6,0,4,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,
					 0,0,4,4,0,0,5,5,0,0,0,3,0,0,0,0,0,0,0,0,0,4,4,4,0,5,5,0,0,0,3,3,3,0,
					 0,0,1,0,0,0,4,4,4,4,5,5,0,0,0,3,3,3,3,3,0,0,1,0,0,4,4,4,4,4];
var h_cell:Number=20;//кол-во строк в таблице
var v_cell:Number=10;//кол-во колонок (столбцов) в таблице
*/
var cross_arr:Array=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,4,3,3,3,0,4,4,2,3,1,1,1,2,3,1,2,2,2,0,1,0,0,0,0];
var h_cell:Number=5;//кол-во строк в таблице
var v_cell:Number=10;//кол-во колонок (столбцов) в таблице

var line_arr:Array=[];//2-мерный массив строк таблицы
var column_arr:Array=[];//2-мерный массив столбцов таблицы
trace(cross_arr.length+'\n');
createArrays();
//
function createArrays(){
	var tmp:Array=[];
	var n:Number=0;
	//Заполняем массив строк
	for(var i=0;i< v_cell;i++){
		line_arr.push(cross_arr.slice(i*h_cell,(i+1)*h_cell));
	}
	trace('temporary array : ');
/* 
Заполняем массив колонок и, почему-то он(массив) заполняется ПОСЛЕДНИМ значением "tmp".
Хотя сам "tmp" трейсится правильно!!
*/
	for( i=0; i< h_cell;i++){
		tmp.length=0;
		for(var j=0; j<v_cell; j++){
			n=j*h_cell+i;
			tmp.push(cross_arr[n]);//Пробовал
			//tmp.push(line_arr[j][i]);// разные варианты
		}
		trace(i+' : '+tmp);
		column_arr.push(tmp);//Пробовал
		//column_arr[i]=tmp;// разные варианты
	}
	//tracer. Смотрим результаты
	trace('\nline_arr[v][h].  v='+line_arr.length+' : h='+line_arr[0].length);
	for(i=0; i< line_arr.length; i++){trace(i+' : '+line_arr[i]);}
	trace('\ncolumn_arr[h][v].  h='+column_arr.length+' : v='+column_arr[0].length);
	for(i=0; i< column_arr.length; i++){trace(i+' : '+column_arr[i]);}
	trace('\ncross_arr.length='+cross_arr.length+'\n'+cross_arr);
}
2. Помогите пожалуйста с алгоритмом. Нужно, как-то упорядочить значения обоих массивов "line_arr" и "column_arr". Т.е. в результате, надо получить, что-то вроде списка (значение - количество, значение - количество,...) по каждой строке и колонке.
Возможно, есть вариант решения без промежуточных 2-мерных массивов?
Заранее благодарю за любой конструктивный совет!

Старый 06.02.2007, 17:47
Zone71 вне форума Посмотреть профиль Отправить личное сообщение для Zone71 Найти все сообщения от Zone71
  № 2  
Ответить с цитированием
Zone71

Регистрация: Sep 2006
Адрес: Moscow
Сообщений: 62
Попробуйте вот так: в функции createArrays() вместо tmp.length = 0
напишите tmp = []. А вообще думаю каждую строку ( и соответственно каждый столбец) лучше вносить в новый массив например для строк:
Код:
var rows:Array = [row1, row2,..., rowN]
,
где row1, row2,..., rowN массивы соответствующих строк. Аналогично для столбцов. Как бы создаете матрицу.
Про сортировку читайте в хелпе про Array.sort, Array.sortOn().

Старый 07.02.2007, 02:09
MOHCTEP вне форума Посмотреть профиль Отправить личное сообщение для MOHCTEP Найти все сообщения от MOHCTEP
  № 3  
Ответить с цитированием
MOHCTEP

Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
2 Zone71
Благодарю за помощь! Замена "tmp.length = 0" на "tmp = []" действительно сработала в процедуре прекрасно. Правда я решил проблему другим (кривым) путем, но, благодаря вам, теперь избавлюсь от излишнего цикла. Спасибо!
По поводу новых массивов: да ведь именно так и делается. Т.е., применительно к вашему примеру, ваш "rows" - это мой "line_arr" и заполняется он циклично массивом "tmp", в коем, при каждой итерации, содержится новая строка или колонка. Т.е. и делается массив массивов или матрица.
Фишка неразгаданная осталась во 2 вопросе моего старт топа.
Если оттрейсить код, с вашим исправлением, вы увидите снимки массивов. Ну и мне , как-то, надо посчитать ненулевые значения в каждой строке и колонке.
К примеру 1 строка массива "line_arr" ="0,0,0,1,2,2,2,0,0,0,1,1,0,3,2,0".
А в результате имеем что-то, типа (1-1, 2-3, 1-2, 3-1, 2-1). Т.е. "значение-количество" или как-то поудобнее возможно?.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.