引用 | 编辑
小汉
2005-12-17 15:45 |
楼主
▼ |
||
![]() 希望请各位大大指点一下,让小弟我有个方向可以去寻找.感谢^^! 解说: 我要在x里面输入五笔字串,然后在y输入一比字串,然后再让程式去比对,如果输入在y里头的字串有出现在x的五笔字串中,即显示Yes,否则显示No. 我的思考方向: i→是拿来作为x的列. j→是拿来判断有没有找到一模一样的字串. k→是拿来作为x的行. 首先 i=0进入回圈一,然后再利用回圈二判断x[ i ]里面是不是跟y的一样, 如果其中有x[ i ]!=y那样的话就执行j++,最后回圈二跑完 .. 访客只能看到部份内容,免费 加入会员 ![]()
|
引用 | 编辑
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上来讨论讨论! ![]() |
引用 | 编辑
小汉
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; } ![]() |