Подскажите с For

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yevheniy Kopanitskyy
1173
Yevheniy Kopanitskyy  

Создал обработчик для массива с 3мя случаями нужно вернуть управление ИФУ подайдё ли return(0);

//--------------------------------------2------------------------------------  
if(MassResult==2)
{
{for(int i=1;i<10000;i++)
if(BinKeyArray[i,3]!=9) 
{
if(i==10000){break;}
return(0);
}
else if(BinKeyArray[i,1]==body[1,2] && BinKeyArray[i,2]==body[2,2] )
{
if(i==10000){break;}
return(0);
}
else
{
Alert("1");
BinKeyArray[ukazatel1Arr,1]=body [1,2]; BinKeyArray[ukazatel1Arr,2]=body [2,2];
}
}
}
//-------------------------------------end2-----------------------------------

в общем смысл прост в первом ифе если не 9 то вернутся к выполнению for

во втором если 1==1 и 2==2 то также вернутся  к выполнению For в третьем выполняется else  присваивание, после чего соответсвено к for нет возврата .

Проблема в том что при тесте проверяю с помощью алерт и третье событие не происходит а значит проблема в исполнении 2 первых событий.Иными словами перебор в массиве не производится корректно.


Пробовал простым методом

BinKeyArray[1,1]=1;
BinKeyArray[1,2]=0;
BinKeyArray[1,3]=1;
BinKeyArray[1,4]=0;
BinKeyArray[1,5]=1;
BinKeyArray[1,6]=1;
BinKeyArray[1,7]=0;
BinKeyArray[1,8]=0;//изменяемое значение
BinKeyArray[1,9]=8;//Изменяемое значение

for(int i=1;i<2;i++)
if(BinKeyArray[1,9]!=9) 
{
Print(" Не Записанно 1");
if(i==150){Comment(i);break;}
return;

}
else if( BinKeyArray[1,1]==1 && BinKeyArray[1,2]==0 && BinKeyArray[1,3]== 1 && BinKeyArray[1,4]==0 && BinKeyArray[1,5]==1 && BinKeyArray[1,6]==1 && BinKeyArray[1,7]==1 && BinKeyArray[1,8]==0 )
{
Print(" Не Записанно  2");
if(i==150){Comment(i);break;}
return;//При полном совпадении выход из функции

}
else
{
//--Производится запись в фаил нового значения бинарного ключа
Print("Записанно");
}
}//end if


Может кто подскажет где ошибся...

SEM
872
SEM  
Yevheniy Kopanitskyy:

Создал обработчик для массива с 3мя случаями нужно вернуть управление ИФУ подайдё ли return(0);

в общем смысл прост в первом ифе если не 9 то вернутся к выполнению for

во втором если 1==1 и 2==2 то также вернутся  к выполнению For в третьем выполняется else  присваивание, после чего соответсвено к for нет возврата .

Проблема в том что при тесте проверяю с помощью алерт и третье событие не происходит а значит проблема в исполнении 2 первых событий.Иными словами перебор в массиве не производится корректно.


Пробовал простым методом


Может кто подскажет где ошибся...

Попробуй так:

   if(MassResult==2)
     {
      //лишние скобки?             {
      for(int i=1;i<10000;i++)
        {//Операторы цикла в скобки 
         if(BinKeyArray[i,3]!=9)
           {
            if(i==10000){break;}
            return(0);
           }
         else if(BinKeyArray[i,1]==body[1,2] && BinKeyArray[i,2]==body[2,2])
           {
            if(i==10000){break;}
            return(0);
           }
         else
           {
            Alert("1");
            BinKeyArray[ukazatel1Arr,1]=body[1,2]; BinKeyArray[ukazatel1Arr,2]=body[2,2];
           }
        };//Операторы цикла в скобки
      //лишние скобки?             }
     }
Желательно использовать стилизатор = Сервис > Стилизатор (Ctrl+,)
Evgeniy Zhdan
16249
Evgeniy Zhdan  
SEM:

Попробуй так:

Желательно использовать стилизатор = Сервис > Стилизатор (Ctrl+,)
};//Операторы цикла в скобки
JRandomTrader
44
JRandomTrader  
Видимо, вместо return требуется continue.
JRandomTrader
44
JRandomTrader  
Кроме того,
if(i==10000){break;}

никогда не сработает, ибо

for(int i=1;i<10000;i++)

А вот в "else" как раз и надо "break".

Yevheniy Kopanitskyy
1173
Yevheniy Kopanitskyy  

Да щас разобрался. Ис за не достачи break индеж возвращался иной. Сейчас исправил.

Очень много ручьной даводки. Как феррари собираю

Alexey Volchanskiy
27275
Alexey Volchanskiy  
Yevheniy Kopanitskyy 2019.04.21 17:32      RU

Да щас разобрался. Ис за не достачи break индеж возвращался иной. Сейчас исправил.

Очень много ручьной даводки. Как феррари собираю

В начале нулевых работал в одной фирме, шеф был отличный организатор, но не шарил в программировании. Спрашивает, - чего проект затянулся? Отвечаю, - ловлю и исправляю ошибки. Он так подумал, - Алексей, а зачем же ты делаешь ошибки? Будь внимательнее, пиши сразу без ошибок ))

Алексей Тарабанов
9796
Алексей Тарабанов  
Yevheniy Kopanitskyy:

Создал обработчик для массива с 3мя случаями нужно вернуть управление ИФУ подайдё ли return(0);

в общем смысл прост в первом ифе если не 9 то вернутся к выполнению for

во втором если 1==1 и 2==2 то также вернутся  к выполнению For в третьем выполняется else  присваивание, после чего соответсвено к for нет возврата .

Проблема в том что при тесте проверяю с помощью алерт и третье событие не происходит а значит проблема в исполнении 2 первых событий.Иными словами перебор в массиве не производится корректно.


Пробовал простым методом


Может кто подскажет где ошибся...

Вы неправильно используете оператор for. В отличие от while, он проверяет условие продолжения цикла перед его повторением, поэтому условие if(i==10000) не будет выполнено никогда. 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий