我已经尝试了好几个小时无济于事,因为你可以在我的代码中看到我有单独的函数,它们都在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;
}
答案 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数组,因为这样可以很好地将所有资源信息保存在一起。