所以我有这段代码:
// 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个函数。
非常感谢任何帮助。 //比约恩
答案 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()
{
...
}