C++并行数组
C++ Parallel Arrays
在这个并行数组中,我看不到或不明白为什么要打印内存地址而不是输入的值。我请求C++之神启发我,并为我提供一些关于这个问题的好教程,以便我可以从中学习。代码如下。
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <ios>
using namespace std;
// Assign a constant
const int rowSize = 6;
const int columnSize = 4;
void displayWelcome()
{
cout << "tCorporation Xn";
cout << "Quartily Reports for the six Entitiesn";
cout << "Showing you the Highest Average out of the sixn";
cout << endl;
}
// Assign Words in a row of 6
string* entitiesArray(string(entities)[rowSize])
{
string entitiesName[rowSize] = {"East ","West ","Central ","Midwest"
,"South ","South East "};
//string entitiesName;
for(int i=0; i < rowSize; i++)
{
cout << entitiesName[i] << endl;
}
return entitiesName;
}
// Assign numbers to a 6x4
double* entriesArray(double(corpArray)[rowSize][columnSize])
{
// Assign Random Numbers to the Array
srand(time(0));
double rowSum = 0.0, average = 0.0;
for (int r = 0; r < rowSize; ++r)
{
rowSum = 0;
for (int c = 0; c < columnSize; ++c)
{
corpArray[r][c] = rand() % 101;
cout << setw(5) << left << corpArray[r][c] << " ";
rowSum += corpArray[r][c];
average = rowSum / 4;
}
cout << average;
cout << endl;
}
return 0;
}
// Parallel Array This is where is prints the Memory Address
void pArray(string &theEntitiesArray,double &theEntriesArray)
{
string entity = &theEntitiesArray;
double entry = &theEntriesArray;
for(int row_index = 0; row_index < 6; row_index++)
{
cout << setw(10) << entity <<endl;
for (int col_index = 0; col_index < 4; col_index++)
{
cout << setw(10) << entry << endl;
}
}
}
int main(int argc, const char * argv[])
{
// Declare an Array & Variables
double corpArray[rowSize][columnSize];
string entities[rowSize];
double* theEntriesArray;
string* theEntitiesArray;
char parallelArray;
displayWelcome();
theEntitiesArray = entitiesArray(entities);
theEntriesArray = entriesArray(corpArray);
pArray(*theEntitiesArray, *theEntriesArray);
cout << endl;
return 0;
}
@JSF在注释中击败了我,但在double entry = &theEntriesArray;
行中,您将theEntriesArray
的地址分配给变量entry
,而不是它所指的数值。将其更改为:
double entry = theEntriesArray;
您在初始化数组的函数中遇到了一些问题,现在可以读取指针了1-http://www.cplusplus.com/doc/tutorial/pointers/
2-http://www.tutorialspoint.com/cplusplus/cpp_pointer_to_pointer.htm
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <ios>
using namespace std;
// Assign a constant
const int rowSize = 6;
const int columnSize = 4;
void displayWelcome()
{
cout << "tCorporation Xn";
cout << "Quartily Reports for the six Entitiesn";
cout << "Showing you the Highest Average out of the sixn";
cout << endl;
}
// Assign Words in a row of 6
string* entitiesArray(string(entities)[rowSize])
{
string* entitiesName = new string[rowSize];
string temp[]= { "East ", "West ", "Central ", "Midwest"
, "South ", "South East " };
for (int i = 0; i < rowSize; i++)
{
entitiesName[i] = temp[i];
}
//string entitiesName;
for (int i = 0; i < rowSize; i++)
{
cout << entitiesName[i] << endl;
}
return entitiesName;
}
// Assign numbers to a 6x4
double** entriesArray(double(corpArray)[rowSize][columnSize])
{
double** tempcorpArray = new double*[rowSize];// [columnSize];
for (int i = 0; i < rowSize; ++i)
{
tempcorpArray[i] = new double[columnSize];
}
// Assign Random Numbers to the Array
srand(time(0));
double rowSum = 0.0, average = 0.0;
for (int r = 0; r < rowSize; ++r)
{
rowSum = 0;
for (int c = 0; c < columnSize; ++c)
{
tempcorpArray[r][c] = rand() % 101;
cout << setw(5) << left << tempcorpArray[r][c] << " ";
rowSum += tempcorpArray[r][c];
average = rowSum / 4;
}
cout << average;
cout << endl;
}
return tempcorpArray;
}
// Parallel Array This is where is prints the Memory Address
void pArray(string* theEntitiesArray, double** theEntriesArray )
{
string* entity = theEntitiesArray;
double** entry = theEntriesArray;
for (int row_index = 0; row_index < 6; row_index++)
{
cout << setw(10) << (entity[row_index]) << endl;
for (int col_index = 0; col_index < 4; col_index++)
{
cout << setw(10) << (entry[row_index][col_index]) << endl;
}
}
}
int main(int argc, const char * argv[])
{
// Declare an Array & Variables
double corpArray[rowSize][columnSize];
string entities[rowSize];
char parallelArray;
displayWelcome();
string* theEntitiesArray = entitiesArray(entities);
double** theEntriesArray = entriesArray(corpArray);
pArray(theEntitiesArray, theEntriesArray);
cout << endl;
return 0;
}
如果有任何问题,请随时询问:D
相关文章:
- 并行用于C++17中数组索引范围内的循环
- OpenMP:并行更新数组总是需要减少数组吗
- 遍历并行数组以确定C++中的最大数字
- 排序并行数组
- 如何从具有两列的.txt文件创建并行数组?
- 是否可以在并行区域中为共享 2D 数组创建选定元素的线程本地副本?(共享,私有,障碍:OPenMP)
- 为什么并行读取数组会导致内存泄漏?
- C++赋值简介:并行数组
- 如何解决在使用动态 2D 数组进行矩阵乘法的 MPI 进行并行编程时的问题
- 循环函数中的并行数组
- 在OpenMP上的并行合并排序上的数组大小问题.如何将合并分类分类为更多任务
- 使用getline从文本文件中创建2个并行字符串数组
- 对于循环和并行数组:未声明的标识符
- 如何使用并行数组使用 c++ 制作包含数量和单词的列表
- 数组的并行求和比C++中的顺序求和慢
- 对一个具有重复元素的数组进行排序时更新并行数组
- 将2D数组行存储在并行数组中
- 将并行数组与 txt 文件分开
- 如何并行删除数组中的零值
- 需要帮助解决特征数组并行构造中的数据争用