0

ここの初心者は、関数の基礎を理解しようとし、参照を渡し、ベクトル/配列を渡します。私のコードは、大きなデータ ファイルをベクターに読み込みます。次に、どういうわけか、ベクトルを配列に変換し、配列を並べ替えて、出力を読み取る必要があります。私の問題は、ベクトルを配列に変換しようとする試みの中にあると思います。

using namespace std;


//function prototype
int readInput(vector<int> &vect);
void sort(int[], int);
void showArray(int[], int);



int main()
{
vector<int> values;
int sum, avg;

sum = readInput(values);

const int SIZE = values.size(); //ISSUE LIES HERE
int arr[SIZE]; //and here 

sort(arr, SIZE);
showArray(arr, SIZE);


avg = sum / values.size();
//cout << "The average is: " << avg;

return 0;
}

int readInput(vector<int> &vect)
{

int count;
int total = 0;

ifstream inputFile("TopicFin.txt"); //open file

if(!inputFile)
{
    return 0; // if file is not found, return 0
}

while(inputFile >> count) //read file
 vect.push_back(count); //add to file

for (int count = 0; count < vect.size(); count++)
 total+=vect[count]; //sum data in vector

return total;

}

void sort(int array[], int size)
{
int startScan, minIndex, minValue;

for(startScan = 0; startScan < (size-1); startScan++)
{
    minIndex = startScan;
    minValue = array[startScan];
    for(int index = startScan + 1; index < size; index++)
    {
        if (array[index] < minValue)
        {
            minValue = array[index];
            minIndex = index;
        }
    }

    array[minIndex] = array[startScan];
    array[startScan] = minValue;
}
}

void showArray(const int array[], int size)
{
for(int count = 0; count < size; count++)
    cout << array[count] << " " << endl;

}
4

3 に答える 3

3

前置きとして、これは学習のために行うのは良いことですが、ベクトルを配列に変換することは、実際のコードではおそらく行うべきことではありません。実際にはstd::sort、ベクトルをソートするために使用します。

int arr[SIZE]問題の根本は、コンパイル時に不明なサイズの配列を構文で宣言できないことです。

const int SIZE = values.size();

this の値は、コードの実行時にわかりますが、コンパイル時にはわかりません。したがってint arr[SIZE];、たとえば、とは異なり、動作できませんint arr[100]。実行時にサイズがわかっている配列を宣言するには、次のように動的に行うことができます

int* arr = new int[size];

また、アレイを手動で削除する必要があります。

于 2013-11-07T18:54:54.520 に答える