- Kiepski
- Uprość, bo jest dość zawiły…
- Błędna [co najmniej] funkcja bool wiersze_kolumny(…), więc może zrób oddzielne bool wiersze(…) i bool kolumny(…) ?
- Możliwe, że oprócz tego są dalsze błędy?
- Testując swój program, powinieneś zrobić to niezależnie dla funkcji wiersze_kolumny(…) i dla mały_kwadrat(…), inaczej trudno wyłapać błąd, wymyśleć test, wykładający tylko pierwszą funkcję, a jednocześnie drugiej nie lub na odwrót [jednak @mariusz193 dał radę ;-)]
BTW
Sprawdzenie, czy wektor v, 9 liczb z zakresu 1…9 nie zawiera powtórek, można zrobić na wiele prostych sposobów, np tak, piszę z pamięci, więc sprawdź, przetestuj, jeżeli zechcesz skorzystać:
bool duplicate( vector <int> &v){
vector <bool> cyfry(10); //cyfry[0] niewykorzystywane;
for (auto i : v) // zmienna i przyjmuje kolejne wartości wektora v
// std >= c++11
if (cyfry[i]) return true; // jest duplikat
else cyfry[i] = true;
return false;
}
Założyłem, że wektor v zawiera liczby [1…9] [==cyfry] , co należy wcześniej oddzielnie sprawdzić lub dodać takie sprawdzenie w tej funkcji. Najlepiej, najłatwiej, po prostu na samym początku, “przelecieć” całą tablicę i sprawdzić, czy nie ma liczb z poza zakresu 1…9.
Powinienem w tej funkcji dodać jeszcze dwa razy const, ale musiałbym już wtedy koniecznie [prze/po]testować tą moją funkcję. 