Показать сообщение отдельно
Старый 11.07.2010, 19:25
Elff вне форума Посмотреть профиль Отправить личное сообщение для Elff Найти все сообщения от Elff
  № 3  
Ответить с цитированием
Elff

Регистрация: Nov 2009
Адрес: 59°57′ с. ш. 30°19′ в. д.
Сообщений: 17
-De-, iNils, спасибо за помощь

Остановился пока на таком варианте, надо будет доработать потом...
Код AS3:
var my_length:int = 2500; // 25 м
var cut_Ar:Array = [102,110,120,125,127,131,137,143,161,176,199,200,250,256,277,300,321,349,351,380,385,387,390];
var index_Array:Array = []; // массив с индексами нужных длин в массиве cut_Ar
var ind:int = cut_Ar.length-1;
var limit:int = 10; // допуск
function rundown():void {
	var max_cutAr:int = cut_Ar[ind];
	var min_numPipe:uint = Math.ceil(my_length/max_cutAr); // минимальное количество труб
	for (var j:int = ind; j>=0; j--) {
		if (min_numPipe<=ind) {
			var long:int = cut_Ar[j];
			var long_minus:int = cut_Ar[j-1];
			if (long<my_length+limit) {
				my_length-=long;
				index_Array.unshift(j);
			}
			if (my_length<=limit && my_length>=-limit) {
				trace("метраж: " + Number(2500-my_length))
				for (var q:int=0; q<index_Array.length; q++) {
					trace(cut_Ar[index_Array[q]])
				}
				//break;
			}
			if (my_length<long_minus-limit) {
				my_length+=long;
				index_Array.splice(0,1);
			}
			if (my_length<=limit && my_length>=-limit) {
				trace("метраж: " + Number(2500-my_length))
				for (var q2:int=0; q2<index_Array.length; q2++) {
					trace(cut_Ar[index_Array[q2]])
				}
				//break;
			}
			if (j==0) {
				index_Array = [];
				my_length = 2500;
				ind--;
				rundown();
			}
		} else {
			break;
		}
	}
}
rundown();
Цитата:
Сообщение от -De- Посмотреть сообщение
ссылка (можно в личку) на риальнэ трубопродавальный сайт =)
Серьезно? могу написать, только сайт мягко говоря убогенький