Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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+中的结构数组+;:为数组中的每个结构赋值_C++_Arrays_Struct - Fatal编程技术网

C++ C+中的结构数组+;:为数组中的每个结构赋值

C++ C+中的结构数组+;:为数组中的每个结构赋值,c++,arrays,struct,C++,Arrays,Struct,我在下面声明了一个结构st,其中包含一个结构变量arr[],一个结构数组。 我试图将值1赋给'num'变量,将值1到10赋给数组arr[]前10个位置的'val'变量。接下来10个位置的值2到'num',值1到10到'val'。但是当我跟踪代码时,它不会为同一数组位置的相应num和val赋值。如果我想将num=1和val=4分配给第四个结构,它会将num=1分配给第三个结构的val,将val=4分配给第四个结构的num 我的问题不是关于数组索引 问题是: 如果是我写的话 arr[2].num=1

我在下面声明了一个结构st,其中包含一个结构变量arr[],一个结构数组。 我试图将值1赋给'num'变量,将值1到10赋给数组arr[]前10个位置的'val'变量。接下来10个位置的值2到'num',值1到10到'val'。但是当我跟踪代码时,它不会为同一数组位置的相应num和val赋值。如果我想将num=1和val=4分配给第四个结构,它会将num=1分配给第三个结构的val,将val=4分配给第四个结构的num


我的问题不是关于数组索引

问题是:

如果是我写的话

arr[2].num=1; arr[2].val=2

({num,val})

预期结果是:arr[2]={1,2}

但实际结果是: arr[1]={num,1} arr[2]={2,val}

#include<iostream.h>
#include<conio.h>


class abc
{

 public:

 struct st
 {
  int num;
  int val;
 };

 st arr[21];

 void funct();

};

void abc::funct()
{
 int i,j,k=1;

 for(i=1;i<=2;i++)
 {
  for(j=1;j<=10;j++)
  {
   arr[k].num=i;
   arr[k].val=j;
   k++;
  }
 }

}


int main()
{
 abc z;

 z.funct();

 return 0;
}
#包括
#包括
abc班
{
公众:
结构街
{
int-num;
int-val;
};
st-arr[21];
void funct();
};
void abc::funct()
{
int i,j,k=1;
对于(i=1;i

如果要访问数组中名为
arr
的第一个元素,请通过
arr[0]
进行访问

因此,如果您这样做可能会有所帮助:

int i,j,k=0

1) 数组是基于0的,即索引从0开始,直到arraySize-1(从您的声明中)。
2) 浏览您的代码并查看每一行正在做什么…
3) 现在想想你需要做什么:
3.1)迭代数组的每个元素
3.2)对于每个元素,访问结构
3.3)要设置的结构内部
num=1到第一个10个元素,2到第二个10个元素(您在这里看到任何简单的数学规则吗?
val=arrayElementIndex(这太简单了)


看看你的代码,想想需要怎么做。

海报明确说明他们想要分配位置1-20。为什么他们跳过0,我不知道。1)执行k=1将值分配给arr[0]。k=2分配给arr[1],依此类推,但仍然将“val”分配给arr[k]的num这是这样的:如果我想给每个结构分配以下{num,val}值:k=1,arr[0]={1,1 arr[1]={1,2}arr[2]={1,3}arr[3]={1,3}arr[3]={1,4},它实际上分配了以下值:arr[0]={1,1}arr[1]={2,1}arr[2]={3,1}arr[3]={4},val[1}'th结构和第0结构的'val'到'num'。我不明白这是怎么发生的。我的查询不是关于数组索引的。问题是:如果我写了语句arr[2]。num=1;arr[2]。val=2;预期结果是:arr[2]={1,2}({num,val}),但实际结果是:arr[1]={num,1}arr[2]={2,val}1)执行k=1将值分配给arr[0].k=2到arr[1],依此类推,但它仍然将'val'分配给arr[k]的num,并将'num'分配给上一个结构。这种情况正在发生:如果我想给每个结构分配以下{num,val}值:如果k=1,arr[0]={1,1arr[1]={1,2}arr[2]={1,3}arr[3]={1,4},它实际上分配了以下值:arr[0]={1,1}{1,1}{1}2}arr[3]={4,1}2)在arr[0],'num'被分配给第(-1)个结构的'val','val'被分配给第0个结构的'num'。我不明白这是怎么发生的。希望您理解了我的查询。我的查询不是关于数组索引的。问题是:如果我编写了语句arr[2].num=1;arr[2].val=2;({num,val}),预期结果是:arr[2]={1,2}但是实际的结果是:arr[1]={num,1}arr[2]={2,val}@user1460936我只是按它应该的样子运行代码(正如我建议您更改的那样),并且它工作正常。它确实有
arr[I].num=?;arr[I]的赋值.val=i;
并生成正确的结果。请重新编写您的代码并发布更正后的版本。然后我们将能够看到您做错了什么。我编写的代码对于我要执行的任务是正确的,即:arr[k]。num=i;arr[k].val=j;但它显示的输出不正确。请运行我编写的代码。我编辑了我的问题,并显示了实际输出和我想要的内容。@Germann我想做的作业非常简单。我真的很惊讶为什么它不会做适当的作业。