помогите разобраться в двух строчках кода!!!

 

Здравствуйте! не пойму что не так!

   int j=0;
   for(j=0; j<=100; j++)
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]); // ТУТ ИНФОРМАЦИЮ ВЫВОДИТ

Внимание дальше.....

Тот же самый код, только в другом цикле

   int j=0;
   while(TSBuffer[j]==0)
     {
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]); //  ТУТ КОМП ВИСНЕТ!!!
      j++;
     }

TSBuffer[j] - ЭТО БУФЕР ИНДИКАТОРА

Что здесь не так?

 

Tango_X:

Здравствуйте! не пойму что не так!

   int j=0;
   for(j=0; j<=100; j++)
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]); // ТУТ ИНФОРМАЦИЮ ВЫВОДИТ

Внимание дальше.....

Тот же самый код, только в другом цикле

   int j=0;
   while(TSBuffer[j]==0)
     {
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]); //  ТУТ КОМП ВИСНЕТ!!!
      j++;
     }

TSBuffer[j] - ЭТО БУФЕР ИНДИКАТОРА

Что здесь не так?

j=0;
            while (TSBuffer[j]==0)
               {
                if (TSBuffer[j]!=0) Print("равен  ",j,"     ",TSBuffer[j]);
                j++;

if(j==100)break;
               }
 

Tango_X:

Здравствуйте! не пойму что не так!

   int j=0;
   for(j=0; j<=100; j++)
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]); // ТУТ ИНФОРМАЦИЮ ВЫВОДИТ

Внимание дальше.....

Тот же самый код, только в другом цикле

   int j=0;
   while(TSBuffer[j]==0)
     {
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]); //  ТУТ КОМП ВИСНЕТ!!!
      j++;
     }

TSBuffer[j] - ЭТО БУФЕР ИНДИКАТОРА

Что здесь не так?

За границы буфера выходите, терминал должен писать об ошибке времени исполнения, что-то типа array out of range.

И оформляйте код,  есть такая кнопочка SRC. Вот так..

j=0;
            while (TSBuffer[j]==0)
               {
                if (TSBuffer[j]!=0) Print("равен  ",j,"     ",TSBuffer[j]);
                j++;

               }   ТУТ КОМП ВИСНЕТ!!!

 

**
 
Renat Akhtyamov:
j=0;
            while (TSBuffer[j]==0)
               {
                if (TSBuffer[j]!=0) Print("равен  ",j,"     ",TSBuffer[j]);
                j++;

if(j==100)break;
               }

100 - это число чтобы просто показать как работает...а мне нужен цикл до тех пора пока переменная не станет равна нулю т.е вот так

while (TSBuffer[j]==0)

 
Tango_X:
100 - это число чтобы просто показать как работает...а мне нужен цикл до тех пора пока переменная не станет равна нулю

Прекрасно!

Сколько у Вас значений в массиве?

Установите границу

До бесконечности j++ не надо наращивать.

У Вас не виснет, а зацикливается

Либо Вы не показали часть цикла, в котором сбрасывается j. Там и ищите ошибку в логике
 
Alexey Volchanskiy:

За границы буфера выходите, терминал должен писать об ошибке времени исполнения, что-то типа array out of range.

И оформляйте код,  есть такая кнопочка SRC. Вот так..

j=0;
            while (TSBuffer[j]==0)
               {
                if (TSBuffer[j]!=0) Print("равен  ",j,"     ",TSBuffer[j]);
                j++;

               }   ТУТ КОМП ВИСНЕТ!!!

 

**
почему же я выхожу за границы массива? что в коде не правильно?
 
Tango_X:
100 - это число чтобы просто показать как работает...а мне нужен цикл до тех пора пока переменная не станет равна нулю

Ну так размер буфера определите и не выходите за границу. 

см. ArraySize

Возвращает количество элементов указанного массива. 

 
Alexey Volchanskiy:

Ну так размер буфера определите и не выходите за границу. 

см. ArraySize

Возвращает количество элементов указанного массива. 

к примеру мы знаем что элемент который я ищу он под номер 100 а кол-во элементов в массиве - 500 - как я могу выйти за границы? Вот в чем вопрос....


цикл for - это подтверждает..

 
Tango_X:

к примеру мы знаем что элемент который я ищу он под номер 100 а кол-во элементов в массиве - 500 - как я могу выйти за границы? Вот в чем вопрос....


цикл for - это подтверждает..

Значит не 100
 
Alexey Volchanskiy:
Значит не 100
Спасибо за помощь))) буду искать проблему...
 

Вроде  так:

   int j=0;
   //--- цикл будет выполнятся пока TSBuffer[j]!=0 или j<ArraySize(TSBuffer)-1
   while(TSBuffer[j]==0 || j<ArraySize(TSBuffer)-1)
     {
      if(TSBuffer[j]!=0)
         Print("равен  ",j,"     ",TSBuffer[j]);
      j++;
     }


 

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