C ++数组与结构相同

时间:2018-02-06 14:25:38

标签: c++ arrays struct

#include <iostream>

using namespace std;

const int MAXACCOUNTS =8;

int count1 = 1;
bool True = true;

int main()

{

int AccountNumber[MAXACCOUNTS] = {1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342};
double Balance[MAXACCOUNTS] = {4254.40, 27006.25, 123.50, 85326.92, 657.0, 7423.34, 4.99, 107864.44};
int DaysSinceDebited[MAXACCOUNTS] = {20, 35, 2, 14, 5, 360, 1, 45};

while (count1 != MAXACCOUNTS)
{
    if (Balance[count1] > 10000 && DaysSinceDebited[count1] > 30)
    {
        cout << AccountNumber[count1] << "  ";
        cout << Balance[count1] << "    ";
        cout << Balance[count1] / 100 * 3 << endl;
    }
    else if (True = true)
    {
        cout << AccountNumber[count1] << "  ";
        cout << Balance[count1] << "    ";
        cout << Balance[count1] / 100 * 3 << endl;
    }
    count1 ++;
}
return 0;
}

嗨大家好

我刚刚开始使用c ++而且卡住了。我正在练习考试,其中一个要求是使用结构使这个程序做同样的事情。我确定它的简单可以有人帮忙解释一下吗?

3 个答案:

答案 0 :(得分:-1)

由于这是一个家庭作业,我不会给你答案,而是试着帮助你了解如何自己完成这项功课。

  1. 您使用的是 相同 大小的三个数组。

  2. 正如您现在可能知道的那样,您可以创建一个结构来存储 多个 数据

  3. 这个问题似乎没有说明你不能使用数组,所以我猜你 可以 使用一个数据它;)

  4. 我希望这些线索能帮助你走上正轨。

    here's a nice read on structs and how to use them

    here's an other one on arrays

答案 1 :(得分:-1)

在C ++中,数组和结构是aggregate types。您可以将它们视为&#34; box&#34;在哪里可以放置&#34;东西&#34;。进入阵列&#34;框&#34;你可以把同样的东西放在他们的索引中引用这些东西。进入struct&#34; box&#34;你可以放置多种东西,可能是不同种类的东西,你可以给它们命名,以便以后引用它们。

诀窍在于您可以嵌套&#34;盒子&#34;一个在另一个里面:例如,你可以把数组&#34; box&#34;进入struct&#34; box&#34;和结构&#34;盒&#34;进入阵列&#34;盒子&#34;。这项练习可能与筑巢的顺序有关。

这是一个小例子(伪C ++):

阵列结构(SoA)

// Struct of Arrays (SoA)
// Put things into arrays, then put arrays into a struct
// (Like in your code, but arrays are wrapped into a struct)
struct Entries {
    int AccountNumber[MAXACCOUNTS];
    double Balance[MAXACCOUNTS];
    int DaysSinceDebited[MAXACCOUNTS];
};

Entries entries;

// Read a "thing" from SoA
ith_account_number = entries.AccountNumber[i];

// Write a "thing" into SoA
entries.AccountNumber[i] = ith_account_number;

结构数组(AoS)

// Array of Structs (AoS)
// Put things into a struct, then put structs into an array
struct Entry {
    int AccountNumber;
    double Balance;
    int DaysSinceDebited;
};

Entry entries[MAXACCOUNTS];

// Read a "thing" from AoS:
ith_account_number = entries[i].AccountNumber;

// Write a "thing" into AoS:
entries[i].AccountNumber = ith_account_number;

数据聚合模式的选择对数据的内存布局,性能特征和代码风格有着深远的影响。可以说,AoS看起来更像是面向对象&#34;方法(想想Java类),而SoA更像是&#34;基于数组的&#34;编程(想想FORTRAN或NumPy)。

我希望有这个小助手你可以轻松解决你的运动。实际上,唯一不同的是你如何访问条目(读写)。

答案 2 :(得分:-3)

使用AccountNumber,Balance和DaysSinceDebited创建一个struct作为其成员变量。

您的stuct应该类似于:

struct Account {
    int AccountNumber;
    double Balance;
    int DaysSinceDebited;
}

然后使用所需的元素数创建一个Account of Array,然后通过传递必要的数据来初始化每个元素。

例如:

AccountDatabase Account[6];
AccountDatabase[1].AccountNumber = 1001;
AccountDatabase[1].Balance= 4254.40;
AccountDatabase[1].DaysSinceDebited = 20;
每个元素的

等等。

对于从结构中提取数据的位置,请使用以下语法:

例如,读取存储在AccountDatabase的第一个元素中的帐号,

AccountDatabase[1].AccountNumber

因此,您的cout << AccountNumber[count1] << " ";会变成

cout << AccountDatabase[count1].AccountNumber << "  ";

并且您的余额是

cout << AccountDatabase[count1].Balance<< "  ";