我一直收到一条错误代码,说jeb
已重新定义,并且将int更改为float
或double
不起作用。这是一个随机数生成器,我的阵列搞乱了。
#include "stdafx.h"
#include <iostream>
#include <random>
using std::cout;
using std::endl;
using std::cin;
int generate();
int numb();
int main()
{
int num = numb();
cout << num << endl;
cout << endl;
int gen = generate();
cout << gen << endl;
cout << endl;
system("Pause");
return 0;
}
int generate(float *jeb[])
{
int jeb [20] = {};
for (int i = 0; i < 20; i++) {
int rng = rand() % numb() + 1;
jeb[i] = rng;
return jeb;
}
}
int numb()
{
int choice;
cout << "Enter maximum number: ";
cin >> choice;
return choice;
}
答案 0 :(得分:5)
这里有几个问题:
int generate(int *jeb[])
{
int jeb [20] = {};
//...
}
现在你有两件名为jeb
的东西。
让我们假设您只想要一个。
您可以发送指针并填写
int generate(int *jeb)
{
//.. fill it up in a for loop
}
但这表示它返回一个int ...
而不是指针,尝试使用数组 - 您似乎事先知道您有20个元素:
#include <array>
std::array<int, 20> generate()
{
std::array<int, 20> jeb;
for (int i = 0; i < 20; i++) {
int rng = rand() % numb() + 1;
jeb[i] = rng;
return jeb; //Really, wait - we haven't done the whole loop yet
}
}
另一个问题现在可能很明显:你正在for循环中间返回。等到你完成了你需要的东西。
std::array<int, 20> generate()
{
std::array<int, 20> jeb;
for (int i = 0; i < 20; i++) {
int rng = rand() % numb() + 1;
jeb[i] = rng;
}
return jeb; // loop now done
}