C ++将数组转换为函数?

时间:2016-05-01 23:38:28

标签: c++

我已经尝试了好几个小时无济于事,因为你可以在我的代码中看到我有单独的函数,它们都在main中,但我需要将每个函数转换为单独的函数。但是,当我尝试任何东西时,即使我尝试传递参数,也会出现错误。有人能指出我正确的方向吗?

#include <iostream>
#include <cstdlib>
#include <ctime>
void printarray();
void average();
void largestnumber();
using namespace std;
int main()
{
    printarray();
    average();
    largestnumber();

    }


void printarray() {
    srand(time(0));
    int n[10], tot = 0;
    for (int i = 0; i < 10; i++)
    {
        n[i] = (1 + rand() % 100);
        cout << n[i] << endl;
    }

}

void average() {
    int j, tot = 0, n[10];
    for (j = 0; j < 10; j++)
    {
        tot += n[j];
    }
    cout << "The average of the numbers in the array are " << tot / j << endl;
}

void largestnumber() {
    int w = 1, int n[10];
    int temp = n[0];
    while (w < 10)
    {
        if (temp < n[w])
            temp = n[w];

        w++;
    }
    cout << "The largest number in the array is " << temp << endl;

}

1 个答案:

答案 0 :(得分:0)

您正在使用的数组需要传递给每个函数,因此在任何地方都使用相同的数组。仅出于灵活性原因,通过大小也是一个好主意。

现在你的功能在编写时非常有用。

#include <iostream>
#include <cstdlib>
#include <ctime>
void printarray(int n[], size_t size);
void average(int n[], size_t size);
void largestnumber(int n[], size_t size);
using namespace std;

int main()
{
    const size_t arr_size = 10;
    int n[arr_size];

    printarray(n, arr_size);
    average(n, arr_size);
    largestnumber(n, arr_size);

}


void printarray(int n[], size_t size) {
    srand((unsigned int)time(0));
    int tot = 0;
    for (size_t i = 0; i < size; i++)
    {
        n[i] = (1 + rand() % 100);
        cout << n[i] << endl;
    }

}

void average(int n[], size_t size) {
    size_t j;
    int tot = 0;
    for (j = 0; j < size; j++)
    {
        tot += n[j];
    }
    cout << "The average of the numbers in the array are " << tot / j << endl;
}

void largestnumber(int n[], size_t size) {
    size_t w = 1;
    int temp = n[0];
    while (w < size)
    {
        if (temp < n[w])
            temp = n[w];

        w++;
    }
    cout << "The largest number in the array is " << temp << endl;

}

一个简单的改进是将printarray分解为一个initarray函数,该函数填充打印内容的数组和printarray。

对一些空数组进行检查也是一个好主意(例如,函数假定存在n [0])。

下一个明显的步骤是将所有这些放在一个类中。此外,如果您被允许,则应使用向量替换c数组,因为这样可以很好地将所有资源信息保存在一起。