作者loveme00835 (朴髮箍)
看板C_and_CPP
標題Re: [問題] 有關於巢狀If敘述
時間Fri Mar 18 20:30:54 2011
※ 引述《Cczr (洩洩歷啊)》之銘言:
: 現在我有一個巢狀if的code
: 我知道在迴圈裏面有break可以跳出迴圈
: 我的問題如下:
: 有沒有辦法在最外層的if內
: 只要有任何一個if不成立
: 則就會跳出整個敘述 (跳出最外層的if)
: 有這種語法嗎?
: 因選擇性敘述裡好像不能使用break
: 懇請高手賜教
: if((char)c == h)
: {
: c = reader.read();
: if((char) c == r)
: c = reader.read();
: else();
: if((char) c == e)
: c = reader.read();
: else();
: if((char) c == f)
: c = reader.read();
: else();
: if((char) c == a)
: c = reader.read();
: else();
: if((char) c == b)
: count=count+1;
: else();
: }
: else
: {}
把排版弄好看一點, 順便幫你去掉不必要的程式碼..
if((
char)c == h)
{
c = reader.read();
if((
char) c == r)
c = reader.read();
if((
char) c == e)
c = reader.read();
if((
char) c == f)
c = reader.read();
if((
char) c == a)
c = reader.read();
if((
char) c == b)
count = count + 1;
}
你可以用層數較多的 if 來把它翻修一下, 就如同前一篇回文一
般, 但我個人比較推薦用迴圈來改寫.
char patterns[] = { r, e, f, a, b };
size_t index = 0;
if( (
char)c == h )
{
for( ; index !=
sizeof(patterns); ++index )
{
c = reader.read();
if( (
char)c != patterns[index] )
break;
}
}
// 順利讀到預期的5種字元
if( index ==
sizeof(patterns) )
++count;
如此一來要新增想比對的字元也不是件難事了, 以為這是老生常
談嗎? 如果本來的結構是像下面這樣:
if((
char)c == h)
{
c = reader.read();
if((
char) c == r)
c = reader.read();
if((
char) c
!= e)
c = reader.read();
if((
char) c == f)
c = reader.read();
if((
char) c == a)
c = reader.read();
if((
char) c == b)
count = count + 1;
}
也是可以改成迴圈來做, 只不過還需要另外一個陣列來做邏輯判
斷的切換:
char patterns[] = { r, e, f, a, b };
bool invert[] = { false, true, false, false, false };
size_t index = 0;
if( (
char)c == h )
{
for( ; index !=
sizeof(patterns); ++index )
{
c = reader.read();
if( ((
char)c != patterns[index])
^ invert[index] )
break;
}
}
// 順利讀到預期的5種字元
if( index ==
sizeof(patterns) )
++count;
完成.
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█
T-ara版怎麼去
████◤
██
◢██◣█
██
████
██
s ~>
T-ara
█/███
██
██
██
█/█ ◢█
██
█/█ 歡迎您的光臨
████◤
██
██
██
██◤
███◤
██◤
恩靜、
智妍、
孝敏
█/███
██
█/█
█◤
██
█/██
██
素妍、
居麗、
寶藍
████◤
█◤
◥██◤ █◤
████◤
█◤
花英 ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
推 tropical72:推~其實我真的看不到原原po的 else 到底是放哪裡. 03/18 20:52
原原po的程式碼有沒有拿去編過還是一個謎...我猜是沒
推 ericinttu:我比較好奇的是原原PO腦子裡想做的是什麼? XDDD 03/18 21:03
對吼! 原po說的是我自己, 改一下好了...
推 tropical72:抱歉,我也更正一下,1F的原po指的是原原po. 03/18 21:49
已更正 :)
※ 編輯: loveme00835 來自: 140.121.197.115 (03/18 22:49)
推 Ebergies:我一直覺得很奇怪, 原 po 不是應該指第一篇文的人嗎...? 03/19 11:26