【发布时间】:2018-02-05 16:24:36
【问题描述】:
这是我第一次在这里发帖,我可能做的不对,提前抱歉。
我无法理解如何将两个单独的一维数组复制到一个多维数组中。这是我作业的一部分,但我已经上交了,可能会因此而失分,但没关系。只要我明白它是如何完成的,我仍然会很高兴。
我遇到问题的具体部分是第 5 部分,我把其他所有内容都记下来了,也许是因为这一天很长,但我似乎无法理解。我将发布整个作业以及我的代码。感谢您花时间阅读所有这些内容。
编写一个 C++ 程序来测试函数 main 和第 1 部分到第 7 部分中讨论的函数。(根据需要添加其他函数,例如打印二维数组。)。
考虑以下函数 main:
<code>int main()
{
int inStock[10][4];
int alpha[20];
int beta[20];
int gamma[4] = {11, 13, 15, 17};
int delta[10] = {3, 5, 2, 6, 10, 9, 7, 11, 1, 8};
.
.
.
}</code>
编写函数 setZero 的定义,该函数将任何 int 类型的一维数组初始化为 0(alpha 和 beta)。
编写函数inputArray的定义,提示用户输入20个数字,并将数字存储为alpha。
编写函数 doubleArray 的定义,该函数将 beta 的元素初始化为 alpha 中对应元素的两倍。确保您阻止该函数修改 alpha 的元素。
编写函数 copyGamma 的定义,该函数将 inStock 第一行的元素从 gamma 和 inStock 的其余行设置为 inStock 前一行的三倍。确保 你阻止函数修改 gamma 的元素。
5.编写函数 copyAlphaBeta 的定义,它将 alpha 存储到 inStock 的前五行,将 beta 存储到 inStock 的后五行。确保您阻止函数修改 alpha 和 beta 的元素。
编写函数 printArray 的定义,该函数打印任何 int 类型的一维数组。
编写函数 setInStock 的定义,提示用户输入 inStock 第一列的元素。然后,该函数应将剩余列中的元素设置为 上一列中的对应元素,减去delta中的对应元素。
这是我的代码:
<code>
#include <iostream>
using namespace std;
int setZero(int alpha[], int beta[]);
int inputArray(int alpha[]);
int doubleArray(const int alpha[], int beta[]);
int copyGamma(const int gamma[], int inStock[][4]);
void copyAlphaBeta(int inStock[][4], const int numberOfRows, const int
alpha[], const int beta[], int numSize);
void printArray(int print[], int n);
int setInStock(int inStock[][4],const int delta[]);
int main()
{
int inStock[10][4];
int alpha[20];
int beta[20];
int gamma[4]={11,13,15,17};
int delta[10]={3,5,2,6,10,9,7,11,1,8};
setZero(alpha, beta);
cout << "Alpha after initialization" << endl;
printArray(alpha, 20);
inputArray(alpha);
cout << "Alpha after reading 20 numbers" << endl;
printArray(alpha, 20);
doubleArray(alpha, beta);
cout << "Beta after a call to doubleArray" << endl;
printArray(beta, 20);
copyGamma(gamma, inStock);
copyAlphaBeta(inStock, 10, alpha, beta, 20);
for (int row=0; row<10;row++)
for (int col=0; col<4; col++)
{
if (col%4==0)
cout << endl;
cout << inStock[row][col] << '\t';
}
cout << endl;
setInStock(inStock, delta);
return 0;
}
int setZero(int alpha[], int beta[])
{
for (int i=0; i<20; i++)
{
alpha[i]=0;
beta[i]=0;
}
cout << endl;
}
int inputArray(int alpha[])
{
cout << endl;
cout << "Enter 20 integers" << endl;
for (int i=0; i<20; i++)
{
cin >> alpha[i];
}
cout << endl;
return 0;
}
int doubleArray(const int alpha[], int beta[])
{
cout << endl;
for (int i=0; i<20; i++)
{
beta[i]=alpha[i]*2;
}
cout << endl;
return 0;
}
int copyGamma(const int gamma[], int inStock[][4])
{
cout << endl;
cout << "inStock after a call to copyGamma" << endl;
for (int row=0;row<10;row++)
for (int column=0;column<4;column++)
{
if (row==0)
inStock[row][column]=gamma[column];
else
inStock[row][column]=3*inStock[row-1][column];
}
cout << endl;
for (int r=0;r<10;r++)
for (int c=0; c<4;c++)
{
if (c==0)
cout << endl;
cout << inStock[r][c] << '\t';
}
cout << endl;
return 0;
}
void copyAlphaBeta(int inStock[][4], const int numberOfRows, const int
alpha[], const int beta[], int numSize)
{
cout << endl;
cout << "inStock after a call to copyAlphaBeta" << endl;
for(int r=0;r<numberOfRows;r++)
{
for(int c=0;c<4;c++)
{
for (int counter=0; counter<numSize; counter++)
{
if(r<5)
{
inStock[r][c]=alpha[counter];
}
else if (r>=5)
{
inStock[r][c]=beta[counter];
}
}
}
}
cout << endl;
}
void printArray(int print[], int n)
{
cout << endl;
for (int i=0;i<n;i++)
cout << print[i] << " ";
cout << endl;
}
int setInStock(int inStock[10][4],const int delta[])
{
int input;
cout << endl;
cout << "Enter 10 integers" << endl;
for (int r=0;r<10;r++)
for (int c=0;c<4;c++)
{
if(c==0)
{
cin >> inStock[r][c];
}
else
inStock[r][c] = 2 * inStock[r][c-1] - delta[r];
}
for (int row=0; row<10;row++)
for (int col=0; col<4; col++)
{
if (col%4==0)
cout << endl;
cout << inStock[row][col] << " ";
}
}
TL;DR - 需要帮助了解过去的作业,我只想知道正确的方法。也请批评,寻找改进的方法。谢谢!
编辑: 我遇到的问题是这部分:
- 编写函数 copyAlphaBeta 的定义,该函数将 alpha 存储到 inStock 的前五行,并将 beta 存储到 inStock 的后五行。确保您阻止函数修改 alpha 和 beta 的元素。
我与这部分问题相关的代码是:
<code>
void copyAlphaBeta(int inStock[][4], const int numberOfRows, const int
alpha[], const int beta[], int numSize)
{
cout << endl;
cout << "inStock after a call to copyAlphaBeta" << endl;
for(int r=0;r<numberOfRows;r++)
{
for(int c=0;c<4;c++)
{
for (int counter=0; counter<numSize; counter++)
{
if(r<5)
{
inStock[r][c]=alpha[counter];
}
else if (r>=5)
{
inStock[r][c]=beta[counter];
}
}
}
}
cout << endl;
}</code>
感谢您提供的链接,目前我不允许使用向量,但我肯定会研究它们。
【问题讨论】:
-
您能否将问题和代码缩小到相关部分?
标签: c++ arrays multidimensional-array