Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将字段从结构添加到数组?_C++ - Fatal编程技术网

C++ 如何将字段从结构添加到数组?

C++ 如何将字段从结构添加到数组?,c++,C++,在我的家庭作业中,我必须使用带有一些字段的结构来构建一个程序。我必须以升序输出一个列表,其中包含“societate”字段的名称以及这些字段的数量 因此,我尝试将所有这些字段添加到一个新数组中,同时检查该字段是否不在该数组中 下面是我如何尝试的: #include "stdafx.h" #include <iostream> #include <string.h> using namespace std; struct sponsorizari { char

在我的家庭作业中,我必须使用带有一些字段的结构来构建一个程序。我必须以升序输出一个列表,其中包含“societate”字段的名称以及这些字段的数量

因此,我尝试将所有这些字段添加到一个新数组中,同时检查该字段是否不在该数组中

下面是我如何尝试的:

#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[]
over
std::string
?@RyanHaining我编辑了我的原始帖子,但有错误。我使用char是因为这是我在学校学到的。请显示代码和/或说明错误。图片上的文本太小,一些人无法阅读。此外,搜索引擎无法为将来的vis检索图像上的文本我正在检查它们是否不相同,如果不相同,它应该将“societate”字段复制到该数组中。起初它是空的,但随后它应该逐个添加它们。(a[k],k++-这就是我将其放在那里的原因)。我的错误是,我没有意识到for循环永远不会执行,因为j永远不会小于k。因此,我认为在这种情况下,第二个for循环应该替换为do-while。对吗?
strcmp
如果两个参数相同,则返回0
if(!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;
        }
    }
}