类型" int"的论证与" int *"类型的参数不兼容

时间:2015-10-29 20:40:45

标签: c++

任务

  

设计一个生成7位数彩票的程序。该程序   应该有一个包含7个元素的INTEGER数组。写一个循环步骤   通过数组,随机生成0到9范围内的数字   为每个元素。然后写另一个循环显示的内容   阵列。

这是我的代码

#include <iostream>
#include <cstdlib>
#include <array>
using namespace std;

// Global Constants
const int ARRAY_SIZE = 7;

// Declare Functions
int genNumber();
void displayResults(int lottoArray[], int ARRAY_SIZE);

// Module -- Main
int main(){
    // Declare Variables
    int LottoArray;

    // Set Functions
    LottoArray = genNumber();

    // Call Display Function
    displayResults(LottoArray, ARRAY_SIZE);

    system("pause");
    return 0;
}

// Module -- Generate Numbers
int genNumber(){
    // Declare Variables for Array
    int lottoArray[ARRAY_SIZE];
    int i = 0;

    // Generate a Number for Each Array Placeholder
    for (i = 0; i < ARRAY_SIZE; i++){

        // Generate Random Number in Array
        lottoArray[i] = rand() % 10;

        int checkNumber = lottoArray[i];

        // Check for multiples
        for (int i : lottoArray){
            while (i == checkNumber){
                checkNumber = rand() % 10;
            }
        }
    }

    return lottoArray[ARRAY_SIZE];
}


// Module -- Display Results
void displayResults(int lottoArray[], int ARRAY_SIZE){
    // Declare Variables
    int i = 0;

    cout << "Lotto Numbers: ";

    // Display Each Value in the Array
    for (i = 0; i < ARRAY_SIZE; i++){
        cout << lottoArray[i] << " ";
    }

    cout << endl;
}

我在代码的这部分标题上得到了错误

// Call Display Function
    displayResults(LottoArray, ARRAY_SIZE);

我理解问题是我没有返回单个int,我返回多个。我该如何解决这个问题?我的程序必须是完全模块化的,主函数只能用于调用其他函数。

1 个答案:

答案 0 :(得分:1)

有几个问题。

genNumber需要返回int *而不是intLottoArray中的main也需要定义为int *

一旦修复,您就会遇到genNumber返回本地定义的数组的问题。函数返回后,该数据将变为未定义。

由于你知道数组的开头有多大,你可能最好将LottoArray(及其大小)传递给genNumber并直接写入,并更改返回输入void

所以你现在有以下内容:

#include <iostream>
#include <cstdlib>
#include <array>
using namespace std;

// Global Constants
const int ARRAY_SIZE = 7;

// Declare Functions
void genNumber(int lottoArray[], int size);
void displayResults(int lottoArray[], int size);   // don't mask global variables

// Module -- Main
int main(){
    // Declare Variables
    int LottoArray[ARRAY_SIZE];    // define an array here

    // Set Functions
    genNumber(LottoArray, ARRAY_SIZE);

    // Call Display Function
    displayResults(LottoArray, ARRAY_SIZE);

    system("pause");
    return 0;
}

// Module -- Generate Numbers
void genNumber(int lottoArray[], int size){
    // Declare Variables for Array
    int i = 0;

    // Generate a Number for Each Array Placeholder
    for (i = 0; i < size; i++){

        // Generate Random Number in Array
        lottoArray[i] = rand() % 10;

        int checkNumber = lottoArray[i];

        // Check for multiples
        for (int i : lottoArray){
            while (i == checkNumber){
                checkNumber = rand() % 10;
            }
        }
    }
}


// Module -- Display Results
void displayResults(int lottoArray[], int size){
    // Declare Variables
    int i = 0;

    cout << "Lotto Numbers: ";

    // Display Each Value in the Array
    for (i = 0; i < size; i++){
        cout << lottoArray[i] << " ";
    }

    cout << endl;
}