Чт дек 09, 2021 11:08:54
for(i=1; i<RET; i++)
{
...
switch(i)
{
case 10:
if()
{
...
RET = 11; // break to out
}
break;
...
case 20:
if()
{
...
RET = 21;
}
break;
...
case 30:
if()
{
...
RET = 31;
}
break;
} // switch()
} // for()
Чт дек 09, 2021 11:20:53
Чт дек 09, 2021 11:38:09
Чт дек 09, 2021 11:40:16
Чт дек 09, 2021 12:28:28
Аlex писал(а):Можно флаг взводить. И после switch его проверять, с бреком на выход.
Те же яйца, только в профиль>TEHb< писал(а):В условиях цикла написать что-то вроде (i<RET)&&(RUN)
Перед циклом взводить RUN в единицу, а внутри switch устанавливать его в ноль, когда нужно выйти.
Чт дек 09, 2021 12:37:30
Чт дек 09, 2021 12:42:56
именно из-за этого весь сыр-борно глазам будет легче...
Чт дек 09, 2021 12:55:22
Аlex писал(а):Те же яйца, только в профиль
Аlex писал(а):воткните goto и не мучайтесь
Чт дек 09, 2021 13:04:58
Чт дек 09, 2021 13:13:12
Чт дек 09, 2021 13:20:07
Чт дек 09, 2021 13:43:53
sunjob писал(а):красиво/очевидно/локонично
Чт дек 09, 2021 13:45:57
Чт дек 09, 2021 14:08:52
sunjob писал(а):красиво/очевидно/локонично
for(i=1; i<BREAK; i++)
{
...
switch(i)
{
case 10:
if()
{
...
BREAK = 0; // видим слово BREAK - значить это "то, что надо"
}
break;
...
}
либо
#define BREAK 0
for(i=1; i<CNT; i++)
{
...
switch(i)
{
case 10:
if()
{
...
CNT = BREAK; // тут вообще все очевидно :о)
}
break;
...
}
Пт дек 10, 2021 14:54:32
Пт дек 10, 2021 16:00:55
Пт дек 10, 2021 18:45:33
#define N_ELEMENTS(x) (sizeof(x) / sizeof(*(x))) // возвращаем количество элементов в массиве
//========================
// Заглушка, т.к. case c нулём нет
//========================
unsigned char Dummy(unsigned char *ret)
{
return(1); // будет break
}
//========================
// действия 1 case switch
//========================
unsigned char Num_1(unsigned char *ret)
{
unsigned char res = 0;
*ret = 5; // меняем значение ret (работаем через указатель)
// if()
res = 1; // без break
return(res); // условие выхода: если 0-выходим, если 1 то не выходим
}
//========================
// действия 2 case switch
//========================
unsigned char Num_2(unsigned char *ret)
{
unsigned char res = 0;
*ret = 6;
// if()
res = 1;
return(res); // условие выхода: если 0-выходим, если 1 то не выходим
}
//========================
// действия 3 case switch
//========================
unsigned char Num_3(unsigned char *ret)
{
unsigned char res = 0;
*ret = 7;
// if()
res = 0;
return(res); // условие выхода: если 0-выходим, если 1 то не выходим
}
//========================
// список case switch
//========================
unsigned char (* const Nums[])(unsigned char *ret) =
{
Dummy, // заглушка
Num_1, // действия в 1 case
Num_2, // действия в 2 case
Num_3, // действия в 3 case
};
//========================
// Главная процедура (Reset)
//========================
void main(void)
{
unsigned char i;
unsigned char RET=5;
while(1)
{
for(i=1; i<RET; i++)
{
if(i < N_ELEMENTS(Nums)) // проверяем, чтобы не вышли за диапазон массива
{
if(!Nums[i](&RET)) break; // вызываем case по номеру i и возвращаем изменённое значение RET, если результат выполнения функции 0, то break
}
}
}
}
Пт дек 10, 2021 19:33:00
void cel ( ) {
for(i=1; i<10; i++)
{
switch(i)
{
case 1: break;
case 2: break;
case 3: break;
case 4: if(x == чего-то там) return; break;
case 5: break;
case 6: break;
case 7: break;
}
}
}
Сб дек 11, 2021 00:33:37
Сб дек 11, 2021 07:06:54