我有这个C ++程序,但是它在控制台中不打印任何内容。 我正在将字符串的内容复制到2个向量中,并对它们进行计数递增操作。
#include <iostream>
#include<vector>
#include<bits/stdc++.h>
#include<string>
using namespace std;
int main()
{
string s;
cin>>s;
int i,j;
vector<char> a;
vector<char> b;
int count1=0;
int count2=0;
int count3=0;
int t=s.length()/2;
for(i=0;i<t-1;t++)
{
a.push_back(s[i]);
}
for(j=t;j<s.length();j++)
{
b.push_back(s[j]);
}
int e1,e2;
for (auto it1 = a.begin(), it2 = b.begin();
it1 != a.end() && it2 != b.end();
++it1, ++it2)
{
if(int(*it1)>int(*it2))
count1++;
if(int(*it1)<int(*it2))
count2++;
if(int(*it1)==int(*it2))
count3++;
}
cout<<min(min(count1,count2),count3);
}
我最后要打印三个计数中的最小值。
答案 0 :(得分:0)
我发现您的代码在下面陷入了无限循环。
for (i = 0; i < t - 1; t++) // not t++, but it should be i++
{
a.push_back(s[i]);
}
我还相信,调试技能可以帮助您在程序中发现错误。
答案 1 :(得分:0)
在插入cin>>s;
之后,程序将等待插入数据,在变量string s
上插入数据之后,但是在您的代码之后,它的目标似乎并不清楚,因为对于多个输入,您使用内部if的方法基本上什么都不会做,您的最初目标是什么?
在for中有一个循环。 将原始的块报价覆盖为:
int t=s.length()/2;
for(i=0;i<t-1;i++)
{
a.push_back(s[i]);
}