указатели — 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 X\n";
cout << "Quartily Reports for the six Entities\n";
cout << "Showing you the Highest Average out of the six\n";
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;
}

0

Решение

@JSF опередил меня в комментарии, но в строке double entry = &theEntriesArray;Вы назначаете адрес theEntriesArray к переменной entry, а не числовое значение, к которому оно относится. Измените это на:

double entry = theEntriesArray;
1

Другие решения

У вас есть некоторые проблемы в функциях, которые теперь initzlize массива нормально попытаться прочитать об указателе
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 X\n";
cout << "Quartily Reports for the six Entities\n";
cout << "Showing you the Highest Average out of the six\n";
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

1

По вопросам рекламы [email protected]