c++ 循环 迭代器 string 类问题
boolcheck(stringstr){for(inti=0;i<str.length();i++){if((str[i]>'9'||str[i]<'0')&&(str...
bool check(string str)
{
for(int i=0;i<str.length();i++)
{
if((str[i]>'9'||str[i]<'0')&&(str[i]!='.'))
cout<<"请注意 您输入的是字符 并进入比较项目!"<<endl;
else
{
}
}
return 0;
}
int main()
{
int cnt=0;
vector<int>a1;
int b1;
string str1;
while(cin>>str1&&str1!="#")
{
check(str1);
b1=atoi(str1.c_str());
a1.push_back(b1);
}
vector<int>a2;
int b2;
string str2;
while(cin>>str2&&str2!="#")
{
check(str2);
b2=atoi(str2.c_str());
a2.push_back(b2);
}
vector<int>::size_type n=a1.size();
vector<int>::size_type m=a2.size();
vector<int>::size_type i=0,j=0;
if (m>=n)
{
for (i=0,j=0;i<n,j<n;++i,++j)
{
if (a1[i]==a2[j])
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
else
{
for (i=0,j=0;i<n,j<n;++i,++j)
{
if (a2[j]==a1[i])
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
return 0;
}
这个程序我想实现 当输入字符的时候提示:不是数字 ,并且把这个字符以及所在的位置删除 比如输出第一组数1,2,3,4,a,5,6 第二组数1,2,3,4,5,8,9,10 两组数的前五项是相等的 而不是前4项 就是把a以及所在的位置删除掉再比较 要怎么改这个程序?
难道没有人会吗? 展开
{
for(int i=0;i<str.length();i++)
{
if((str[i]>'9'||str[i]<'0')&&(str[i]!='.'))
cout<<"请注意 您输入的是字符 并进入比较项目!"<<endl;
else
{
}
}
return 0;
}
int main()
{
int cnt=0;
vector<int>a1;
int b1;
string str1;
while(cin>>str1&&str1!="#")
{
check(str1);
b1=atoi(str1.c_str());
a1.push_back(b1);
}
vector<int>a2;
int b2;
string str2;
while(cin>>str2&&str2!="#")
{
check(str2);
b2=atoi(str2.c_str());
a2.push_back(b2);
}
vector<int>::size_type n=a1.size();
vector<int>::size_type m=a2.size();
vector<int>::size_type i=0,j=0;
if (m>=n)
{
for (i=0,j=0;i<n,j<n;++i,++j)
{
if (a1[i]==a2[j])
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
else
{
for (i=0,j=0;i<n,j<n;++i,++j)
{
if (a2[j]==a1[i])
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
return 0;
}
这个程序我想实现 当输入字符的时候提示:不是数字 ,并且把这个字符以及所在的位置删除 比如输出第一组数1,2,3,4,a,5,6 第二组数1,2,3,4,5,8,9,10 两组数的前五项是相等的 而不是前4项 就是把a以及所在的位置删除掉再比较 要怎么改这个程序?
难道没有人会吗? 展开
2个回答
2011-06-14
展开全部
string t;
bool check(string str)
{
for(int i=0;i<str.length();i++)
{
if((str[i]>'9'||str[i]<'0')&&(str[i]!='.'))
cout<<"请注意 您输入的是字符 并进入比较项目!"<<endl;
else
{
}
}
return 0;
}
int main()
{
int cnt=0;
vector<int>a1;
vector<int>a2;
int b1,b2;
string str1,str2;
cout<<"请输入第一组数:"<<endl;
while(cin>>str1&&str1!="#")
{
check(str1);
b1=atoi(str1.c_str());
a1.push_back(b1);
}
cout<<"请输入第二组数:"<<endl;
while(cin>>str2&&str2!="#")
{
check(str2);
b2=atoi(str2.c_str());
a2.push_back(b2);
}
vector<int>::size_type n=a1.size();
vector<int>::size_type m=a2.size();
vector<int>::size_type i=0,j=0;
vector<int>::iterator r=a1.begin();
vector<int>::iterator R=a2.begin();
if (m>=n)
{
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();)
{
if (*r==atoi(t.c_str()))
{
a1.erase(r);
}
else
{
++r;
}
if (*R==atoi(t.c_str()))
{
a2.erase(R);
}
else
{
++R;
}
}
for (r=a1.begin();r<a1.end();++r)
{
cout<<*r;
}
cout<<endl;
for (R=a2.begin();R<a2.end();++R)
{
cout<<*R;
}
cout<<endl;
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();++r,++R)
{
if (*r==*R)
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
else
{
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();)
{
if (*r==atoi(t.c_str()))
{
a1.erase(r);
}
else
{
++r;
}
if (*R==atoi(t.c_str()))
{
a2.erase(R);
}
else
{
++R;
}
}
for (r=a1.begin();r<a1.end();++r)
{
cout<<*r;
}
cout<<endl;
for (R=a2.begin();R<a2.end();++R)
{
cout<<*R;
}
cout<<endl;
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();++r,++R)
{
if (*r==*R)
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
return 0;
}
其实就是用了erase函数
bool check(string str)
{
for(int i=0;i<str.length();i++)
{
if((str[i]>'9'||str[i]<'0')&&(str[i]!='.'))
cout<<"请注意 您输入的是字符 并进入比较项目!"<<endl;
else
{
}
}
return 0;
}
int main()
{
int cnt=0;
vector<int>a1;
vector<int>a2;
int b1,b2;
string str1,str2;
cout<<"请输入第一组数:"<<endl;
while(cin>>str1&&str1!="#")
{
check(str1);
b1=atoi(str1.c_str());
a1.push_back(b1);
}
cout<<"请输入第二组数:"<<endl;
while(cin>>str2&&str2!="#")
{
check(str2);
b2=atoi(str2.c_str());
a2.push_back(b2);
}
vector<int>::size_type n=a1.size();
vector<int>::size_type m=a2.size();
vector<int>::size_type i=0,j=0;
vector<int>::iterator r=a1.begin();
vector<int>::iterator R=a2.begin();
if (m>=n)
{
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();)
{
if (*r==atoi(t.c_str()))
{
a1.erase(r);
}
else
{
++r;
}
if (*R==atoi(t.c_str()))
{
a2.erase(R);
}
else
{
++R;
}
}
for (r=a1.begin();r<a1.end();++r)
{
cout<<*r;
}
cout<<endl;
for (R=a2.begin();R<a2.end();++R)
{
cout<<*R;
}
cout<<endl;
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();++r,++R)
{
if (*r==*R)
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
else
{
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();)
{
if (*r==atoi(t.c_str()))
{
a1.erase(r);
}
else
{
++r;
}
if (*R==atoi(t.c_str()))
{
a2.erase(R);
}
else
{
++R;
}
}
for (r=a1.begin();r<a1.end();++r)
{
cout<<*r;
}
cout<<endl;
for (R=a2.begin();R<a2.end();++R)
{
cout<<*R;
}
cout<<endl;
for (r=a1.begin(),R=a2.begin();r<a1.end(),R<a2.end();++r,++R)
{
if (*r==*R)
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
return 0;
}
其实就是用了erase函数
展开全部
string str2;
while(cin>>str2&&str2!="#")
这个地方使用str2的时候没有定义str2 会出现错误,
后面的判断条件需要修改下
while('0' >a1[i] ||a1[i] > '9')
{
i++;
if(i > m) break;
}
while('0' >a2[j] ||a1[j] > '9')
{
j++;
if(j > n) break;
}
if (a1[i]==a2[j])
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
while(cin>>str2&&str2!="#")
这个地方使用str2的时候没有定义str2 会出现错误,
后面的判断条件需要修改下
while('0' >a1[i] ||a1[i] > '9')
{
i++;
if(i > m) break;
}
while('0' >a2[j] ||a1[j] > '9')
{
j++;
if(j > n) break;
}
if (a1[i]==a2[j])
{
++cnt;
}
else
{
}
}
if(cnt==0)
{
cout<<"没有元素?或是元素都不相等?"<<endl;
}
else
{
cout<<"他们前"<<cnt<<"项相等"<<endl;
}
}
追问
能写出完整运行过的程序吗? 看不太明白。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询