C++ 在C+中计算数组中不相等的字符串+;
我想计算数组中所有不同的字符串元素。 因此,我的意见是:C++ 在C+中计算数组中不相等的字符串+;,c++,arrays,string,count,C++,Arrays,String,Count,我想计算数组中所有不同的字符串元素。 因此,我的意见是: 5 Lemon Orange Lemon Mango Lemon 输出应该是这样的: 3 我的代码的问题是,我的代码计算所有元素,而不仅仅是不同的元素,我不知道为什么 这是我的密码: #include <iostream> using namespace std; int main() { int N; cin >> N; string Tname; string da
5 Lemon Orange Lemon Mango Lemon
输出应该是这样的:
3
我的代码的问题是,我的代码计算所有元素,而不仅仅是不同的元素,我不知道为什么
这是我的密码:
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
string Tname;
string data[N];
int counter = 0;
for(int i = 0; i<N; i++)
{
cin >> Tname;
data[i] = Tname;
}
for(int l = 0; l<N; l++)
{
int k = 0;
while(k<N && (data[l] != data[k]))
{
k++;
}
if(k<N)
{
counter += 1;
}
}
cout << counter << endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
int N;
cin>>N;
字符串名称;
字符串数据[N];
int计数器=0;
对于(int i=0;i>t名称;
数据[i]=Tname;
}
对于(int l=0;l而言,问题在于算法:每个项都等于自身,这将过早地结束k循环。此外,仅当重复该项时才递增
我建议您更改循环,以便不将每个项目与每个其他项目进行比较,而仅将项目与以前处理的项目进行比较:
for(int l = 0; l<N; l++)
{
int k = 0;
while(k<l && data[l] != data[k]) // only previous items
{
k++;
}
if(k==l) // if no identical, we can add this one
{
cout<<l<<" "<<data[l]<<endl;
counter += 1;
}
}
for(int l=0;l如果我很了解您的问题,您需要在数组中具有最大外观的值,则需要进行一些修改以实现此目的:
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
string Tname;
string data[N];
int counter = 0;
for(int i = 0; i<N; i++)
{
cin >> Tname;
data[i] = Tname;
}
int tempCounter; // a temporary counter for each item of the array .
for(int l = 0; l < N; l++)
{
tempCounter = 0;
int k = 0;
while(k<N)
{
if(data[l] == data[k])
tempCounter++;
k++;
}
if(tempCounter > counter) // if the new counter is higher than the counter
counter = tempCounter;
}
cout << counter << endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
int N;
cin>>N;
字符串名称;
字符串数据[N];
int计数器=0;
对于(int i=0;i>t名称;
数据[i]=Tname;
}
int tempCounter;//数组中每个项的临时计数器。
对于(int l=0;l
因为你总是在k到达N之前停下
k必须从l开始
您的逻辑是,如果计数器不在列表的剩余部分,则向计数器添加1
但是代码检查整个列表,所以你从不把WHW WHECH列入列表两次。这个代码>字符串数据[n];< /C> >是无效的C++。我假设只加载<代码> STD::unOrdEdEdTys<代码>,并报告<代码> siz()
循环完成是不可能的。这并不能解决逻辑问题。这是3个柠檬的计数,恰好与答案相同。@super-oops,的确如此。我编辑了,保留了循环结构,但只查看了以前的项目。是啊,谢谢,这解决了我的代码,现在我明白了我的逻辑中的问题。谢谢太多了。@Benedek很高兴知道这有帮助:-)谢谢你的反馈,而不是最大的外观。我想计算数组中的所有不同元素。如果我的解释不准确,很抱歉。但是谢谢你的帮助,我想我也从中吸取了教训。