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

 

Создал обработчик для массива с 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


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

 
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+,)
 
SEM:

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

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

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

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

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

 

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

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

 
Yevheniy Kopanitskyy 2019.04.21 17:32      RU

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

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

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

 
Yevheniy Kopanitskyy:

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

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

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

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


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


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

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

Причина обращения: