引用 | 編輯
小漢
2005-12-17 15:45 |
樓主
▼ |
||
x0
昨天老師叫我們練習的題目,可是我做出來的結果就是不會正確,不知道為什麼呢..希望請各位大大指點一下,讓小弟我有個方向可以去尋找.感謝^^! 解說: 我要在x裡面輸入五筆字串,然後在y輸入一比字串,然後再讓程式去比對,如果輸入在y裡頭的字串有出現在x的五筆字串中,即顯示Yes,否則顯示No. 我的思考方向: i→是拿來作為x的列. j→是拿來判斷有沒有找到一模一樣的字串. k→是拿來作為x的行. 首先 i=0進入迴圈一,然後再利用迴圈二判斷x[ i ]裡面是不是跟y的一樣, 如果其中有x[ i ]!=y那樣的話就執行j++,最後迴圈二跑完 .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
MarkTzen
2005-12-18 01:26 |
1樓
▲ ▼ |
就我看的部份
複製程式 if(j=0) {cout<<"Yes"<<endl; break;} if((i=4)&&(j!=0)) cout<<"No"<<endl; 判斷式用 j = 0 ,是一個 assignment,永遠都會是true,所以 yes應該都一直會印啊! 另一點不太懂的,就是 第二行 i=4,你可能也是要判斷 i == 4 吧! 問題是為什麼要 i == 4的情況下,j != 0,就是沒找到呢? 看程式的邏輯,j > 0應該算是x的字串列裡,沒找到跟y一樣的字。 若是這樣,我倒覺得應該是判斷j == 5 (就是全部都沒有match嘛)~ 我只是簡單的看一下…把我的想法post上來討論討論! x1 |
引用 | 編輯
小漢
2005-12-24 12:54 |
2樓
▲ |
引用MarkTzen於2005-12-18 01:26發表的 : 感謝大大糾正了我的錯誤,我發現我很多語法上的錯誤,例如想要i=0應該要打i==0才對^^ 我剛剛已經把它完成了,感謝大大 複製程式 #include <cstdlib> #include <iostream> using namespace std; int main() { char x[5][15],y[15]; int i,j,k; for(i=0;i<5;i++) cin>>x[i];cout<<endl; cin>>y;cout<<endl; for(i=0;i<5;i++) { k=0;j=0; while(y[j]!='\0'){if(x[i][j]!=y[j]) k++;j++;} if(k==0) {cout<<"Yes"<<endl;break;} if(i==4) cout<<"No"<<endl; } system("PAUSE"); return 0; } x0 |