如何将我的数组发送到另一个函数? C ++

时间:2013-10-17 09:09:06

标签: c++ arrays multidimensional-array

所以我有这段代码:

// ConsoleApplication2.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include <ctime>
#include <stdio.h>

using namespace std;


int main()
{
    int bankDeposit();
    void game();
    void checkVictorySum(int gameFieldCheck[3][3]);

    int totalDeposit = 0;

    int gameField;

    cout << "Welcome to the slot machine, bet a sum and win money depending on the number of equal rows." << endl;
    totalDeposit = bankDeposit();
    game();
    return 0;
}

int bankDeposit()
{
    int deposit = 0;
    int betAbleMoney = 0;

    bool correctDeposit = false;
    bool endOfFunction = false;
    bool incorrectAnswer = true;

    char wantToDepositMore = 'Y';

    while (!endOfFunction)
    {

        while (wantToDepositMore == 'Y')
        {
            while (!correctDeposit)
            {
                cout << "How much money do you want to deposit? " << endl;
                cin >> deposit;

                if (cin.fail())
                {
                    cin.clear();
                    cin.ignore();
                    cout << "That's an incorrect input" << endl;
                }

                else
                {
                    correctDeposit = true;
                }
            }
            betAbleMoney += deposit;
            cout << "You have deposited a total of " << betAbleMoney << " Euro" << endl;
            incorrectAnswer = true;

            while (incorrectAnswer)
            {
                cout << "Do you want to deposit more money? (Y/N)" << endl;
                cin >> wantToDepositMore;

                if (cin.fail())
                {
                    cin.clear();
                    cin.ignore();
                    cout << "That's an incorrect input" << endl;
                    incorrectAnswer = true;
                }

                else
                {
                    incorrectAnswer = false;
                }

                if (wantToDepositMore != 'N' && wantToDepositMore != 'Y')
                {
                    incorrectAnswer = true;
                    cout << "That's an incorrect input " << endl;
                }

                else
                {
                    if (wantToDepositMore == 'N')
                    {
                        endOfFunction = true;
                    }

                    else
                    {
                        correctDeposit = false;
                        deposit = 0;
                    }
                }               
            }                       
        }       
    }
    return betAbleMoney;
}

void game()
{
    void checkVictorySum(int gameFieldCheck);
    srand(time(0));
    int gameField [3][3];
    char mainGameField [3][3];

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            gameField[i][j] = rand() % 3 + 1;
        }
    }
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            if (gameField[i][j] == 1)
            {
                mainGameField [i][j] = 'x';
            }

            if (gameField[i][j] == 2)
            {
                mainGameField [i][j] = 'o';
            }

            if (gameField[i][j] == 3)
            {
                mainGameField [i][j] = '*';
            }
            cout << mainGameField[i][j];
        }
        cout << endl;
    }
    checkVictorySum(gameField[3][3]);
}

void checkVictorySum(int gameField[3][3])
{
    int rows = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << gameField[i][j];
            cout << endl;
        }

    }
}

我想checkVictorySum能够使用游戏中的2D阵列。我之所以不检查同一函数中的所有内容,是因为在我们的赋值中我们需要有3个函数。

非常感谢任何帮助。 //比约恩

3 个答案:

答案 0 :(得分:0)

我猜你得到了隐式声明函数的错误,而且函数与它们的声明不匹配。原因是C ++中的所有内容都需要在之前声明使用它。

在你的情况下,这可以通过在调用函数定义之前放置函数定义,或者通过创建函数原型(函数的声明)来完成。

答案 1 :(得分:0)

你的问题与传递2 dim数组无关,因为它有效:

void func(int arr[3][3])
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            arr[i][j] = 0;
        }
    }
}

int main()
{
    int arr[3][3] = {0};

    func(arr);
}

请注意,当用作函数参数时,数组会衰减为指针,这意味着维度值会丢失。所以你要么必须知道数组的大小,要么将维度和数组一起传递给函数

答案 2 :(得分:0)

您需要将您的函数原型移出main()

int bankDeposit();
void game();
void checkVictorySum(int gameFieldCheck[3][3]);

int main()
{
    ...
}