aaarrr 70 December 9, 2021 Posted December 9, 2021 · Report post И по поводу читаемости: goto - очевидное действие, модификация переменной цикла, набивание кода 100500 continue - костыли, механизм работы которых специально изучать надо. И таки да, легко выстрелить в ногу. 1 minute ago, jcxz said: один гвоздь торчит в сторону и колет спину Ключевое слово один - он действительно один, и назначение его очевидно. Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 281 December 9, 2021 Posted December 9, 2021 · Report post Тоже очень редко пользуюсь goto именно в таких случаях. Не вижу никаких проблем. Quote Share this post Link to post Share on other sites More sharing options...
Rst7 5 December 9, 2021 Posted December 9, 2021 · Report post 9 minutes ago, aaarrr said: goto - очевидное действие А остальные - крайне неочевидные. В которых легко допустить ошибку, иногда - трудно находимую. Потому что вагон писанины. Quote Share this post Link to post Share on other sites More sharing options...
artemkad 131 December 15, 2021 Posted December 15, 2021 · Report post Не совсем ясен смысл такого паровоза. Судя по коду цель - выполнить цепочку этапов и если условие текущего выполняется, перейти к следующему. Как по мне тут явно for не к месту - тут скорее нужен do{}while(i) U8 z=1,i=10 do { ... switch(i) { case 10: if() { ... } else { z=0 } break; ... case 20: if() { ... } else { z=0 } break; default: z=0 break; } // switch() i++; } while(z); Если на месте первого троеточия нет кода(т.е. нет кода постоянно исполняемого в цикле), то там вообще можно обойтись без цикла. Quote Share this post Link to post Share on other sites More sharing options...
sunjob 0 December 15, 2021 Posted December 15, 2021 · Report post а какая разница, for() или do-while()? выброс из цикла происходит одинаково, по установке/сбросу переменной цикла. поясните, в 2-3х предложениях?! если только визуально do-while() приятнее, то ... ну ладно, пусть, я не против, но не вижу разницы вообще :о) Quote Share this post Link to post Share on other sites More sharing options...
artemkad 131 December 18, 2021 Posted December 18, 2021 · Report post 1) при обработке case вообще не влезаешь в счетчик цикла 2) имеется один общий и понятный механизм завершения цикла(z=0). Quote Share this post Link to post Share on other sites More sharing options...
sunjob 0 December 23, 2021 Posted December 23, 2021 (edited) · Report post 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; ... } все то-же самое :о) за исключением что счетчик используется для выброса (мавр сделал, мавр может...) из плюсов - ни чего не надо перехреноверчивать :о) Edited December 23, 2021 by sunjob Quote Share this post Link to post Share on other sites More sharing options...
Dvorkin 1 December 5, 2022 Posted December 5, 2022 · Report post Здесь или goto или ввести булевский флаг выхода из цикла: bool fl_exit=false; for(int i=0; (i<N) && !fl_exit; i++) {switch(i) {case 0: break; case 1: break; case 10: fl_exit=true; break; }//switch }//for Quote Share this post Link to post Share on other sites More sharing options...
xvr 12 December 6, 2022 Posted December 6, 2022 · Report post On 12/5/2022 at 3:01 PM, Dvorkin said: Здесь или goto или ввести булевский флаг выхода из цикла: Немного поторопились с советом - через пару недель теме как раз год бы исполнился 🙂 Quote Share this post Link to post Share on other sites More sharing options...
Dvorkin 1 December 9, 2022 Posted December 9, 2022 · Report post On 12/6/2022 at 10:58 PM, xvr said: Немного поторопились с советом - через пару недель теме как раз год бы исполнился 🙂 Ну, если за год никто не предложил разумного решения - значит, задача чрезвычайно трудна, нельзя было оставить без ответа 😀 Quote Share this post Link to post Share on other sites More sharing options...