Witam, robię zadania ze spoja, które powinno wpisywać "TAK" lub "NIE" w zależności od uzyskanego wyniku. Jednak u mnie coś nie działa, ponieważ wypisuje cały czas "TAK" i jeszcze niedokładną liczbę razy.
#include <iostream>
using namespace std;
bool sprawdzenieRzedow (int sudoku[9][9])
{
for (int numerWiersza = 0; numerWiersza < 9; numerWiersza++)
{
for (int numerKolumny = 0; numerKolumny < 9; numerKolumny++)
{
for (int pomocnicza = numerKolumny + 1; pomocnicza < 9; pomocnicza++)
{
if(sudoku[numerWiersza][numerKolumny] == sudoku[numerWiersza][pomocnicza])
return false;
}
}
}
}
bool sprawdzenieKolumn(int sudoku[9][9])
{
for(int numerWiersza = 0; numerWiersza < 9; numerWiersza++)
{
for (int numerKolumny = 0; numerKolumny < 9; numerKolumny++)
{
for (int pomocnicza = numerWiersza + 1; pomocnicza < 9; pomocnicza++)
{
if(sudoku[numerWiersza][numerKolumny] == sudoku[pomocnicza][numerKolumny])
return false;
}
}
}
}
bool sprawdzenieMalychKwadratow (int sudoku[][9])
{
int tymczasowa[9], k = 0;
for(int numerWiersza = 0; numerWiersza < 9; numerWiersza += 3) //przechodzimy po blokach 3x3
{
for (int numerKolumny = 0; numerKolumny < 9; numerKolumny += 3)
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
tymczasowa[k++] = sudoku[numerWiersza + i][numerKolumny + j];
for (int l = 0; l < 9; l++)
{
for (int m = l + 1; m < 9; m++)
{
if(tymczasowa[l] == tymczasowa[m])
return false;
}
}
}
}
}
}
}
void wypiszWynik (int sudoku[][9], int iloscTestow)
{
bool poprawneSudoku;
for (int i = 0; i < iloscTestow; i++)
{
if(poprawneSudoku = true)
{
cout << "TAK" << endl;
}
else
{
cout << "NIE" << endl;
}
}
}
int main()
{
int liczbaTestow;
int sudoku[9][9];
bool poprawneSudoku;
cin >> liczbaTestow;
while (liczbaTestow--)
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
cin >> sudoku[i][j];
if(sudoku[i][j] > 9 || sudoku[i][j] < 0)
{
poprawneSudoku = false;
}
}
sprawdzenieRzedow (sudoku);
sprawdzenieKolumn(sudoku);
sprawdzenieMalychKwadratow(sudoku);
wypiszWynik(sudoku, liczbaTestow);
return 0;
}
}
}