Błąd LNK2005 pomoc

0

Witam, potrzebuje pomocy z rozwiązaniem pewnego problemu, z którym nie mogę sobie poradzić i nie mam już żadnych pomysłów jak rozwiązać ten problem :/

Błąd LNK2005 Element "bool __cdecl sudoku(void)" (?sudoku@@YA_NXZ) jest już zdefiniowany w elemencie funkcje.obj
Błąd LNK2005 Element "void __cdecl wstawsudoku(void)" (?wstawsudoku@@YAXXZ) jest już zdefiniowany w elemencie funkcje.obj
Błąd LNK2005 Element _main jest już zdefiniowany w elemencie funkcje.obj
Błąd LNK2005 Element "int (* tab)[9]" (?tab@@3PAY08HA) jest już zdefiniowany w elemencie funkcje.obj
Błąd LNK1169 znaleziono co najmniej jeden wielokrotnie zdefiniowany symbol

main.cpp

#include <iostream>
#include "funkcje.h"


using namespace std;

int tab[9][9]
{
	{3, 0, 6, 5, 0, 8, 4, 0, 0},
	{5, 2, 0, 0, 0, 0, 0, 0, 0},
	{0, 8, 7, 0, 0, 0, 0, 3, 1},
	{0, 0, 3, 0, 1, 0, 0, 8, 0},
	{9, 0, 0, 8, 6, 3, 0, 0, 5},
	{0, 5, 0, 0, 9, 0, 6, 0, 0},
	{1, 3, 0, 0, 0, 0, 2, 5, 0},
	{0, 0, 0, 0, 0, 0, 0, 7, 4},
	{0, 0, 5, 2, 0, 6, 3, 0, 0}

};

 bool sudoku() // wyszukuje puste miejsca i wstawia odpowiednia liczbe 
{
	int wiersz, kolumna;
	
	if (!puste_miejsce(wiersz, kolumna))
	{
		return true;
	}
	for (int liczba = 1; liczba <= 9; liczba++)
	{
		
		if (miejsce(wiersz, kolumna, liczba))
		{
			
			
			tab[wiersz][kolumna] = liczba;
			if (sudoku())
			{
				return true;
			}
			else
			tab[wiersz][kolumna] = 0;


		}





	}
	return false;
}

  void wstawsudoku() // tworzymy sudoku
{


	for (int wiersz = 0; wiersz < 9; wiersz++)
	{
		for (int kolumna = 0; kolumna < 9; kolumna++)
		{
			if (kolumna == 3 || kolumna == 6)
			{
				cout << " | ";
				cout << tab[wiersz][kolumna] << " ";
			}
			if (wiersz == 2 || wiersz == 5)
			{
				cout << endl;
				for (int i = 0; i < 9; i++)
				{
					cout << "---";
				}
			}
		}
	}
}
int main()
{
	
	
	if (sudoku() == true)
		wstawsudoku();

	return 0;
}

funckcje.cpp

#include "funkcje.h"
#include "main.cpp"

bool szukanie_w_kolumnie(const int& kolumna, const int& liczba) // sprawdzamy czy w kolumnie już liczba czy nie
{
	for (int wiersz = 0; wiersz < 9; wiersz++)
	{
		if (tab[wiersz][kolumna] == liczba)
		{
			return true;
		}
		else
			return false;
	}
	return 0;
}

bool szukanie_w_wierszu(const int& wiersz, const int& liczba)//sprawdzamy czy w wierszu już liczba czy nie
{
	for (int kolumna = 0; kolumna < 9; kolumna++)
	{
		if (tab[wiersz][kolumna] == liczba)
		{
			return true;
		}
		else

			return false;
	}
	return 0;
}

bool szukanie_w_kwadracie(const int& kwadrat_kolumna, const int& kwadrat_wiersz, const int& liczba) // sprawdzamy czy w kwadracie 3x3 jest juz liczba czy nie
{
	for (int kolumna = 0; kolumna < 3; kolumna++)
	{
		for (int wiersz = 0; wiersz < 3; wiersz++)
		{
			if (tab[wiersz + kwadrat_wiersz][kolumna + kwadrat_kolumna] == liczba)
			{
				return true;
			}
			else
				return false;
		}
	}
	return 0;

}

bool puste_miejsce(const int& kolumna, const int& wiersz) //szukamy pustego miejsca w sudoku
{
	for (int wiersz = 0; wiersz < 9; wiersz++)
	{
		for (int kolumna = 0; kolumna < 9; kolumna++)
		{

			if (tab[wiersz][kolumna] == 0)
			{
				return true;
			}
			else
				return false;
		}
	}
	return 0;
}

bool miejsce(const int& wiersz, const int& kolumna, const int& liczba) // sprawdza czy mozna wstawic liczbe do danego miejsca
{
	return !szukanie_w_wierszu(wiersz, liczba) && !szukanie_w_kolumnie(kolumna, liczba) && !szukanie_w_kwadracie(wiersz - wiersz % 3, kolumna - kolumna % 3, liczba);
}

funkcje.h

#pragma once
#ifndef FUNKCJEH
#define FUNKCJEH


bool szukanie_w_kolumnie(const int& kolumna, const int& liczba);
bool szukanie_w_wierszu(const int& wiersz, const int& liczba);
bool szukanie_w_kwadracie(const int& kwadrat_kolumna, const int& kwadrat_wiersz, const int& liczba);
bool puste_miejsce(const int& kolumna, const int& wiersz);
bool miejsce(const int& wiersz, const int& kolumna, const int& liczba);



#endif 
1

#include "funkcje.h"
#include "main.cpp"

0

@_13th_Dragon: Muszę tab zadeklarować. Jak dam tab[9][9] to wyskakuje mi taki sam błąd, tylko ze z tab. Jak dam int tab to z kolei inny błąd wyskakuje, ale już wiem dlaczego. Jak dam #define N 9 tab[N][N[ to jest tak samo, jak w pierwszym przypadku.

1

do funkcje.h dodaj:

extern int tab[9][9];
0

@_13th_Dragon: O jejku, kompiluje się :D Dziękuje bardzo za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1