Witam, chciałbym się dowiedzieć, dlaczego kompilator krzyczy:
more than one instance of overloaded function "ruch" matches the argument : function "ruch(int **, int, int, int, int)" function "ruch(int **szach, int ruch, int &i, int &j, int N)" argument types are: (int **, int, int, int, int)
Oto kod źródłowy:
#include <iostream>
#include <cstdlib>
using namespace std;
bool skoczek(int, int, int, int);
bool ruch(int **, int, int, int, int);
int main()
{
int n;
cin >> n;
if (skoczek(n, 1, 0, 0))
cout << "possible" << endl;
else cout << "impossible" << endl;
system("pause");
return 0;
}
bool skoczek(int N, int licz, int i, int j)
{
static int **szach = new int *[N];
for (int a = 0; a < N; a++)
szach[a] = new int[N];
for (int a = 0; a < N; a++)
for (int b = 0; b < N; b++)
szach[a][b] = 0;
if (licz == N * N) return true;
for (int k = 0; k < 8; k++)
{
szach[i][j] = licz;
if (ruch(szach, k, i, j, N))
return skoczek(N, licz + 1, i, j);
szach[i][j] = 0;
}
return false;
}
bool ruch(int **szach, int ruch, int &i, int &j, int N)
{
int tab_i[8] = { -2, -1, 1, 2, 2, 1, -1, -2 };
int tab_j[8] = { 1, 2, 2, 1, -1, -2, -2, -1 };
i += tab_i[ruch]; j += tab_j[ruch];
return (i < N && i >= 0 && j < N && j >= 0 && !szach[i][j]);
}