PDA

Просмотр полной версии : Ну ваще :( он просто виснет здесь :(


Countach
09.01.2002, 15:24
Драсте :)
Вот срочняк, завтра здать надо, я провалял дурака думал все ОК, а не тут то было, вообщем на этом месте комп просто стоит какое-то время я не говорю о том чтобы уж делать то чё надо :( а потом говорит типа проблема со скриптом и прекращает его выполнение :(
Вот на этом месте, тут есть сразу так если сказать какие-нить проблемы, может синтаксис или еще чё :(

counter = 0;
precounter = 0;
signal = true;

while (signal != false) {
for (Row=0; Row<NoProcesses; Row++) {
for (Column=0; Column<NoResources; Column++) {
if ((NeedI[Row][Column]<=AvailI[Column]) && (Status[Row] == false)) {
Finish[Column] = true;
}
}
Pid = true;
for (Column=0; Column<NoResources; Column++) {
if (Finish[Column] == false) {
Pid = false;
}
}
Status[Row] = Pid;
if (Pid == true) {
counter++;
AvailTemp[Column] += AllocTemp[Row][Column];
}
}
// end of outer for loop
Pst = true;
for (Row=0; Row<NoProcesses; Row++) {
if (Status[Row] == false) {
Pst = false;
}
}
if (Pst == true) {
gotoAndPlay ("safe");
// all "true" in the status array
}
signal = false;
if (counter>precounter) {
precounter = counter;
signal = true;
}
}
// end while loop
AvailI[ColumnR] = AvailI[ColumnR]+Request;
AllocI[RowR][ColumnR] = AllocI[RowR][ColumnR]-Request;
NeedI[RowR][ColumnR] = NeedI[RowR][ColumnR]+Request;
gotoAndPlay ("unsafe");

Помогите плиз :)

Вот исходник, ну не знаю он может и не понадобится :)

Countach
09.01.2002, 16:20
НЕ вот этот файл лучше :)

Countach
09.01.2002, 19:22
Не я конечно понимаю све, но как такое возможно, чтобы ФОР ЛУП просто пропускался, а не выполнялся :(

else {
// terminate random process
RowR = random(NoProcesses);
for (Column=0; Column<NoResourses; Column++) {
trace ("test");
AvailI[Column] = AvailI[Column]+AllocI[RowR][Column];
NeedI[RowR][Column] = MaxI[RowR][Column];
AllocI[RowR][Column] = 0;
}
trace ("Terminate process");
gotoAndPlay ("request");
}

В аутпут я вижу Terminate process, но не вижу test
Это как такое быть может :)
просто нет слов

yurail
09.01.2002, 19:35
tak... ti sovsem brjaknulsja....
ti zh na C++ pishesh.... nu dik na fig takoe na flash pihat>???? (po druzheski)

Countach
09.01.2002, 21:36
Юра согласен, я сам себе это не прощу :(
но расклад был такой :(

1. Поспорил, что зафигачу это во флеше, потипу слегка обломался :(

2. Хотел флеш програминг получше выучить, приятное с полезным совместить

Но меня флеш сильно разочаровал прям так скажу :
дело в следущем

декларируем два массива

AvailI = new Array(NoResources);
AvCons = new Array(4, 5, 16, 2, 12, 64);

Затем приравниваем, один к другому

AvailI = AvCons;


а потом в другом кадре меняем значения одного !!! лишь одного массива, но какого-то хрена, они как зеркальные копии меняются вместе...
А мне нуна оригинал держать не изменным...
КАК ЭТО СДЕЛАТЬ
блин во всех языках, копия и оригинал разные вещи :(

lexass
10.01.2002, 11:52
function origToTMP(){
for(var i=0;i<original.length;i++)
{
tmpOrig[i]=original[i]
}
}

C2Plus
10.01.2002, 11:59
Во-первых, если условие в цикле ФОР не выполняется, он и не будет выполнятся. Совершенно точно тебе говорю, что NoResourses на подходе к циклу у тебя либо 0 либо undefined тогда все, кирдык-хана. :)

Во-вторых, RTFM - массив есть лишь ссылка на него, тоже самое ты получих и на Сях. Копии делаются так: YourArray.slice(0,-1) - вернет новый массив, идентичный YourArray. Переменная принимающая массив, может быть не определена.

C2Plus
10.01.2002, 12:10
по этой же причине, вот это:

if (counter>precounter) {
precounter = counter;
signal = true;
}

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

Countach
10.01.2002, 15:45
Пасиба снова но вот тут совсем другая проблема была :(

if (counter>precounter) {
precounter = counter;
signal = true;
}

Это выполняется и причем прекрасненько :)

С ФОР лупом проблема была в следущем:
у меня есть переменная - NoResources
А я обращаялся к - NoResourses

Все вроде теперь работаеть :)
пасиба всем