【发布时间】:2015-06-04 23:02:05
【问题描述】:
我在将数组从函数返回到主函数时遇到问题。该数组还用作另一个函数的参数。
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
void ran(int list[]);
void guess(int list[]);
int black_marker(int num1[], int num2[]);
int main(){
int r[4];
int g[4];
cout << black_marker(ran(r), guess(g));
}
void ran(int list[]){ //random number generator
srand (time(NULL));
int a = rand() % 6 + 1;
int b = rand() % 7 + 1;
while(a == b)
b = rand() % 7 + 1;
int c = rand() % 8 + 1;
while(a == c || b == c)
c = rand() % 8 + 1;
int d = rand() % 9 + 1;
while(a == d || b == d || c == d)
d = rand() % 9 + 1;
int num_random[4] = {a, b, c, d};
}
void guess(int list[]){ //takes user input for a guess
int random_no[4];
for(int i = 0; i < 4; i++){
cin >> random_no[i];
}
}
int black_marker(int num1[], int num2[]){ //Counts how many digits from random number
int black_count = 0; //is similar to the user's guess
for(int i = 0; i < 4; i++){
if(num1[i] == num2[i]){
black_count += 1;
}
}
return black_count;
}
基本上,这是一个不完整的猜数游戏,其中向用户提供提示,例如随机生成的数字共有的位数和用户输入的猜测。我收到cout << black_marker(ran(r), guess(g)); 的 void 类型错误,这是不寻常的,因为当我在 void 函数的主体中有 cout 语句时,这种传递引用方法可以正常工作。
【问题讨论】:
-
欢迎使用 C++ 以及作为其标准库的一部分内置的所有漂亮容器。使用
std::vector<int>。并阅读通过常量引用传递。 -
black_marker 作为第一个参数数组,但您提供了一个 void 函数 void ran(r)