收寻&比对字串的问题(已解决)

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