-1

我正在开展一个项目,该项目需要在它们自己的功能中执行某些操作。现在,我必须获取生成的随机值,并将它们从数组中输出。我将值存储在 中numarray,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,它似乎会获取数组并输出它,但我不知道如何在没有参数的情况下调用该函数以在main. 这是输出数组的一种可能方式,还是应该以完全不同的方式完成。

PS:我知道命名空间不好,但这是我必须做的才能通过课程。

#include <iostream> 
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <cstddef>


using namespace std;
ofstream randomData;
ifstream inputrandomData;
void randomgenerator();
void read();
void printArray(int *numarray);


void randomgenerator() {
    srand(time(0));
    randomData.open("randomData.txt");
    for (int counter = 0; counter < 100; counter++) {
        randomData << rand() % 100+1 << endl;
    }
    randomData.close();
    
}


void read() {
    inputrandomData.open("randomData.txt");
    int numarray[100] = {};
    for (int i = 0; i < 100; i++) {
        inputrandomData >> numarray[i];
    
    }
    inputrandomData.close();

}



void printArray(int *numarray) {
    
    for (int index = 0; index < 100; index++) {
        cout << numarray[index];
    }

}


int main() {

    randomgenerator();
    read();
    printArray();

    return 0;
}

randomgenerator函数是生成值并将它们存储在文件中的原因。该read函数获取这些值并将它们存储在一个数组中。 printarray是我要输出数组值的函数,这给了我问题。

4

2 回答 2

4

您需要动态分配并从读取中返回 numarray。或者甚至更好地创建 numarray 就像您在堆栈上所做的那样,但在 main 中执行并将其作为参数传递给 read,然后作为参数传递给 printArray。

因为它是 numarray 将在读取完成时超出范围,因为您将它分配在堆栈上。

于 2020-02-03T17:40:19.383 回答
0

解决方案(根据您的代码):在 main.xml 中声明局部数组变量。传递函数的指针以及数组大小,因为它需要在传递的函数中处理数组。这种设计是不可取的。

您可以设计该类,因为其中涉及一些数据成员,您可以在其上调用该类的方法。

您可以更喜欢 std::vector 作为数据成员,以根据您的要求保留保留大小的数据。因为 std::vector 的保留方法避免了随着向量大小的增长而重新分配。在这里,您的大小为 100。因此您可以保留 std::vector 的 100 项。

于 2020-10-13T09:43:57.963 回答