我一直收到一个错误代码,说明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;
}
Run Code Online (Sandbox Code Playgroud)
这里有几个问题:
int generate(int *jeb[])
{
int jeb [20] = {};
//...
}
Run Code Online (Sandbox Code Playgroud)
现在你有两件事叫做jeb.我们假设您只想要一个.您可以发送指针并填写它
int generate(int *jeb)
{
//.. fill it up in a for loop
}
Run Code Online (Sandbox Code Playgroud)
但这说它返回一个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
}
}
Run Code Online (Sandbox Code Playgroud)
另一个问题现在可能很明显:你正在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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |