收尋&比對字串的問題(已解決)

Home Home
引用 | 編輯 小漢
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