C++ 如何将字段从结构添加到数组?
在我的家庭作业中,我必须使用带有一些字段的结构来构建一个程序。我必须以升序输出一个列表,其中包含“societate”字段的名称以及这些字段的数量 因此,我尝试将所有这些字段添加到一个新数组中,同时检查该字段是否不在该数组中 下面是我如何尝试的:C++ 如何将字段从结构添加到数组?,c++,C++,在我的家庭作业中,我必须使用带有一些字段的结构来构建一个程序。我必须以升序输出一个列表,其中包含“societate”字段的名称以及这些字段的数量 因此,我尝试将所有这些字段添加到一个新数组中,同时检查该字段是否不在该数组中 下面是我如何尝试的: #include "stdafx.h" #include <iostream> #include <string.h> using namespace std; struct sponsorizari { char
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
struct sponsorizari {
char societate[30], localitate[30];
int cod_sponsorizare, data, valoare;
};
int main()
{
int n, k = 0;
char a[100];
sponsorizari x[100];
cin >> n;
for (int i = 0; i < n; i++)
{
cin.get();
cin.get(x[i].societate, 30);
cin.get();
cin.get(x[i].localitate, 30);
cin.get();
cin >> x[i].cod_sponsorizare >> x[i].data >> x[i].valoare;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < k; j++)
{
if (!strcmp(a[j], x[i].societate))
{
strcpy(a[k], x[i].societate);
k++;
}
}
}
}
#包括“stdafx.h”
#包括
#包括
使用名称空间std;
海绵状结构{
char societate[30],localitate[30];
国际商业赞助组织,数据,valoare;
};
int main()
{
int n,k=0;
chara[100];
赞助组织x[100];
cin>>n;
对于(int i=0;i>x[i].商业赞助>>x[i].数据>>x[i].瓦洛尔;
}
对于(int i=0;i
它不起作用-它给了我一些错误。 我怎样才能让它工作 问题归结为在这两行中使用
a
if (!strcmp(a[j], x[i].societate)) {
strcpy(a[k], x[i].societate);
//...
a
是一个char[]
,当您执行a[j]
时,它将返回一个char
。不能将字符*
(字符串)复制到字符
。我想你只是想在这里使用a
if (!strcmp(a, x[i].societate)) {
strcpy(a, x[i].societate);
//...
虽然我对这段代码的大部分都迷茫了。您正在检查它们是否相同,然后从一个复制到另一个是否相同 你从来没有把任何东西放在
a
中
在为(int j=0;jk
初始化为0
,因为k
在这里是*
,所以它永远不会运行。我不知道内环的作用是什么,但看起来它不属于我
int count = 0;
for (int i = 0; i < n; i++) {
if (!strcmp(a, x[i].societate)) {
++count;
}
}
如果这是为了上课,我郑重建议你上班,因为你显然非常迷茫。为你所说明的问题制定解决方案:
#include <iostream>
#include <string.h>
#include <unordered_map>
using namespace std;
struct sponsorizari {
string societate, localitate;
int cod_sponsorizare, data, valoare;
};
int main()
{
int n, count = 0;
unordered_map<string,int> stringMap;
cout<<"Enter Value of n"<<endl;
cin >> n;
sponsorizari x[n];
for (int i = 0; i < n; i++)
{
cout<<"Enter societate "<<i<<endl;
cin>>x[i].societate;
cout<<"Enter localitate "<<i<<endl;
cin>>x[i].localitate;
cout<<"Enter cod_sponsorizare "<<i<<endl;
cin>>x[i].cod_sponsorizare;
cout<<"Enter data "<<i<<endl;
cin>>x[i].data;
cout<<"Enter valoare "<<i<<endl;
cin>>x[i].valoare;
stringMap[(x[i].societate)]++;
}
cout<<"Among the n input societate's, the unique societate's are"<<endl;
for (auto x : stringMap)
{
if(x.second==1)
{
cout<<x.first<<endl;
}
}
}
#包括
#包括
#包括
使用名称空间std;
海绵状结构{
弦联,局部;
国际商业赞助组织,数据,valoare;
};
int main()
{
int n,计数=0;
无序地图;
cout“它不起作用-它给了我一些错误”这是非常模糊的。编译器错误?运行时错误?输出错误?你能通过删除不相关的代码来缩小错误的范围吗?你为什么要使用char[]
overstd::string
?@RyanHaining我编辑了我的原始帖子,但有错误。我使用char是因为这是我在学校学到的。请显示代码和/或说明错误。图片上的文本太小,一些人无法阅读。此外,搜索引擎无法为将来的vis检索图像上的文本我正在检查它们是否不相同,如果不相同,它应该将“societate”字段复制到该数组中。起初它是空的,但随后它应该逐个添加它们。(a[k],k++-这就是我将其放在那里的原因)。我的错误是,我没有意识到for循环永远不会执行,因为j永远不会小于k。因此,我认为在这种情况下,第二个for循环应该替换为do-while。对吗?strcmp
如果两个参数相同,则返回0if(!strcmp(…)
只有当它们相等时才是真的。我不知道你说的“逐个添加”是什么意思。你是在试图累积一个列表,列出所有与数组中前面的字符串不匹配的字符串吗?如果你想要一个100
字符串数组,你应该char a[100][30]
虽然此代码可能会解决问题,但如何以及为什么解决此问题将真正有助于提高您的文章质量,并可能导致更多的投票。请记住,您是在将来为读者回答问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释,并给出指示n适用的限制和假设。
#include <iostream>
#include <string.h>
#include <unordered_map>
using namespace std;
struct sponsorizari {
string societate, localitate;
int cod_sponsorizare, data, valoare;
};
int main()
{
int n, count = 0;
unordered_map<string,int> stringMap;
cout<<"Enter Value of n"<<endl;
cin >> n;
sponsorizari x[n];
for (int i = 0; i < n; i++)
{
cout<<"Enter societate "<<i<<endl;
cin>>x[i].societate;
cout<<"Enter localitate "<<i<<endl;
cin>>x[i].localitate;
cout<<"Enter cod_sponsorizare "<<i<<endl;
cin>>x[i].cod_sponsorizare;
cout<<"Enter data "<<i<<endl;
cin>>x[i].data;
cout<<"Enter valoare "<<i<<endl;
cin>>x[i].valoare;
stringMap[(x[i].societate)]++;
}
cout<<"Among the n input societate's, the unique societate's are"<<endl;
for (auto x : stringMap)
{
if(x.second==1)
{
cout<<x.first<<endl;
}
}
}