如何用C++实现这个程序: 要求是C++,不是C。 最主要是处理在不知道数据行数的情况下如何使信息编写程序。
这是题目:输入格式若干行,每行若干个数据,第一个数据表示待查找的元素,第二个数据表示查找序列的元素个数m,接着后面为组成查找序列的m个数据。输出格式每行一个输出结果,找到...
这是题目:
输入格式
若干行,每行若干个数据,第一个数据表示待查找的元素,第二个数据表
示查找序列的元素个数m,接着后面为组成查找序列的m个数据。
输出格式
每行一个输出结果,找到输出”YES”,找不到输出”NO”
输入输出格式样例:
输入
3 10 10 20 30 40 50 60 70 80 90 100
10 5 100 200 10 50 80
5 8 80 70 50 60 40 30 5 10
输出
NO
YES
YES。
附有我写的程序:
#include <iostream.h>
void jude(int m,int n);
void main()
{
cout<<"输入"<<endl;
int m,n;
cin>>m>>n;
cout<<"输出"<<endl;
while(m!=EOF)
{
jude(m,n);
}
}
void jude(int m,int n)
{
int *p;
int c=0;
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(m==p[j])
{cout<<"YES"<<endl;break;}
else
c=c+1;
}
if(c==n)
cout<<"NO"<<endl;
delete []p;
}
要如何改,谢谢~~ 展开
输入格式
若干行,每行若干个数据,第一个数据表示待查找的元素,第二个数据表
示查找序列的元素个数m,接着后面为组成查找序列的m个数据。
输出格式
每行一个输出结果,找到输出”YES”,找不到输出”NO”
输入输出格式样例:
输入
3 10 10 20 30 40 50 60 70 80 90 100
10 5 100 200 10 50 80
5 8 80 70 50 60 40 30 5 10
输出
NO
YES
YES。
附有我写的程序:
#include <iostream.h>
void jude(int m,int n);
void main()
{
cout<<"输入"<<endl;
int m,n;
cin>>m>>n;
cout<<"输出"<<endl;
while(m!=EOF)
{
jude(m,n);
}
}
void jude(int m,int n)
{
int *p;
int c=0;
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(m==p[j])
{cout<<"YES"<<endl;break;}
else
c=c+1;
}
if(c==n)
cout<<"NO"<<endl;
delete []p;
}
要如何改,谢谢~~ 展开
4个回答
展开全部
#include <iostream.h>
void jude(int m,int n);
int a[100];
int b;
void main()
{
int i;
while(1)
{
cout<<"输入"<<endl;
int *m,*n;
m=new int[1];
n=new int[1];
cin>>m[0]>>n[0];
cout<<"输出"<<endl;
jude(m[0],n[0]);
delete []m;
delete []n;
if(m[0]!=EOF);
else break;
}
for(i=0;i<=b;i++)
while(a[i])
cout<<"YES\n";
cout<<"NO\n";
}
void jude(int m,int n)
{
int *p;
int c=0;
int b=0;
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(m==p[j])
{
a[b]=1;
b++;
}
else
c=c+1;
}
if(c==n)
{
a[b]=0;
b++;
}
delete []p;
}
你看行吗 ?
我不怎么会 只能写成这样了 你刚才的程序 while(m!=EOF)
{
jude(m,n);
}
永真啦 所以没达到预期目标 我们刚学程序的结构只能给你写成这样啦~~
我不太清楚释放内存都不知道是干什么的 就随便跟着你学了 学了老半天也没学会
呵呵~~~希望对你有帮助吧
那个EOF是什么意思我也不知道 我猜用个if语句应该可以把程序结束 条件你自己写吧 我不懂EOF
相交个朋友 以后我不会了 还能请教一下你 你能告诉我EOF怎么用吗?
396515416
void jude(int m,int n);
int a[100];
int b;
void main()
{
int i;
while(1)
{
cout<<"输入"<<endl;
int *m,*n;
m=new int[1];
n=new int[1];
cin>>m[0]>>n[0];
cout<<"输出"<<endl;
jude(m[0],n[0]);
delete []m;
delete []n;
if(m[0]!=EOF);
else break;
}
for(i=0;i<=b;i++)
while(a[i])
cout<<"YES\n";
cout<<"NO\n";
}
void jude(int m,int n)
{
int *p;
int c=0;
int b=0;
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(m==p[j])
{
a[b]=1;
b++;
}
else
c=c+1;
}
if(c==n)
{
a[b]=0;
b++;
}
delete []p;
}
你看行吗 ?
我不怎么会 只能写成这样了 你刚才的程序 while(m!=EOF)
{
jude(m,n);
}
永真啦 所以没达到预期目标 我们刚学程序的结构只能给你写成这样啦~~
我不太清楚释放内存都不知道是干什么的 就随便跟着你学了 学了老半天也没学会
呵呵~~~希望对你有帮助吧
那个EOF是什么意思我也不知道 我猜用个if语句应该可以把程序结束 条件你自己写吧 我不懂EOF
相交个朋友 以后我不会了 还能请教一下你 你能告诉我EOF怎么用吗?
396515416
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
void jude(int m);
void main()
{
cout<<"输入"<<endl;
int m;
cin>>m;
while(m!=0) //输入0表示退出
{
jude(m);
cout<<"输入(输入0退出程序)"<<endl;
cin>>m;
}
}
void jude(int m)
{
int n,i,*p;
cin>>n;
p=new int[n];
for(i=0;i<n;i++)
{
cin>>p[i];
if(m==p[i])//输入数据时就开始比较
{
cout<<"输出:YES"<<endl; //只要结果匹配就马上就输出结果,退出这个输入过程
break;
}
}
if(i==n) //全部数据都输入完了,还找不到匹配的数据,输出结果
cout<<"输出:NO"<<endl;
delete []p;
}
void jude(int m);
void main()
{
cout<<"输入"<<endl;
int m;
cin>>m;
while(m!=0) //输入0表示退出
{
jude(m);
cout<<"输入(输入0退出程序)"<<endl;
cin>>m;
}
}
void jude(int m)
{
int n,i,*p;
cin>>n;
p=new int[n];
for(i=0;i<n;i++)
{
cin>>p[i];
if(m==p[i])//输入数据时就开始比较
{
cout<<"输出:YES"<<endl; //只要结果匹配就马上就输出结果,退出这个输入过程
break;
}
}
if(i==n) //全部数据都输入完了,还找不到匹配的数据,输出结果
cout<<"输出:NO"<<endl;
delete []p;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
int main()
{
int key;
int array[100];
while(cin>>key)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>array[i];
}
int ans=0;
for(int i=0;i<n;i++)
{
if(array[i]==key) ans=1;
if(ans==1) break;
}
if(ans==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
//你是做ACM?
using namespace std;
int main()
{
int key;
int array[100];
while(cin>>key)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>array[i];
}
int ans=0;
for(int i=0;i<n;i++)
{
if(array[i]==key) ans=1;
if(ans==1) break;
}
if(ans==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
//你是做ACM?
追问
应该是ACM的吧,我的作业。
你的程序不符合要求啊,这样子我也可以编写的。我要的是这种格式:
输入
3 10 10 20 30 40 50 60 70 80 90 100
10 5 100 200 10 50 80
5 8 80 70 50 60 40 30 5 10
输出
NO
YES
YES
如果像你这样子,我还不如在我原来的那个程序,编写一个while语句,再进行三次运算。
还是很感谢你了,哇哈哈。
还想请问一下,为什么在最后要输入^z才能结束?是不是当key检测不到数值之后就这样的。
追答
输入^z?没看懂。。。。。
我ACM做多啦,呵呵呵,丢啦。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
void jude(int m,int n);
void main()
{
cout<<"输入"<<endl;
int m,n;
cin>>m>>n;
cout<<"输出"<<endl;
char YesorNo='y';
while(YesorNo=='y')
{
jude(m,n);
cout<<"是否继续?(y\n)"<<endl;
cin>>YesorNo;
}
}
void jude(int m,int n)
{
int *p;
int c=0;
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(m==p[j])
{cout<<"YES"<<endl;break;}
else
c=c+1;
}
if(c<n);
else
cout<<"NO"<<endl;
delete []p;
}
试试行不行。
void jude(int m,int n);
void main()
{
cout<<"输入"<<endl;
int m,n;
cin>>m>>n;
cout<<"输出"<<endl;
char YesorNo='y';
while(YesorNo=='y')
{
jude(m,n);
cout<<"是否继续?(y\n)"<<endl;
cin>>YesorNo;
}
}
void jude(int m,int n)
{
int *p;
int c=0;
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
for(int j=0;j<n;j++)
{
if(m==p[j])
{cout<<"YES"<<endl;break;}
else
c=c+1;
}
if(c<n);
else
cout<<"NO"<<endl;
delete []p;
}
试试行不行。
追问
不怎么行,不符合我的要求。我希望能按格式运作,在命令指示栏只是显示如下:
输入
3 10 10 20 30 40 50 60 70 80 90 100
10 5 100 200 10 50 80
5 8 80 70 50 60 40 30 5 10
输出
NO
YES
YES
你的这个程序但不是我的要求,谢你了。
我要求能够输入任意行,并且在不知道输入数据的行数的情况下。我要程序能自动识别,当换行的时候重新循环可以运行...谢谢~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询