Witam mam pewien problem. Piszę algorytm i chyba mi nie zwraca odpowiednich wartosci i dokladnie nie wiem dlaczego. Jest to lekko naiwny algorytm ale wedlug mnie powinien dzialac dobrze oto kawalek kodu
Kod:
int tak_k=0,tak_w=0;
if(k_i==0){
if(k_j==0){
for(int i=0;i<il_k_w;i++)
if(tabKiK[i][i]==tabKiK[i+1][i+1]) tak_k++;
}
else{
if(k_j==il_k_w){
int j=il_k_w;
for(int i=0;i<il_k_w;i++){
j--;
if(j>=0)
if(tabKiK[i][j]==tabKiK[i+1][j-1]) tak_k++;
}
}
}
}
else{
if(k_i==il_k_w){
if(k_j==0){
int i=il_k_w;
for(int j=0;j<il_k_w;j++){
i--;
if(i>=0)
if(tabKiK[i][j]==tabKiK[i+1][j-1]) tak_k++;
}
}
else{
if(k_j==il_k_w){
for(int i=0;i<il_k_w;i++)
if(tabKiK[i][i]==tabKiK[i+1][i+1]) tak_k++;
}
else{
for(int i=0;i<il_k_w;i++){
tak_k=0; //zerowanie licznikow prawdziwosc
tak_w=0;
for(int j=0;j<(il_k_w-1);j++){
if(int(tabKiK[j][i])==int(tabKiK[j+1][i])) tak_k++; //bada czy wszystkie elementy w danej kolumnie sa takie same
if(tabKiK[i][j]==tabKiK[i+1][j]) tak_w++; //bada czy wszystkie elementy w wierszu sa takie same
}
}
}
}
}
}
if(tak_k%il_k_w) return 0; //sprawdzanie czy jest za pomoca licznikow tak_ i jesli ktorys jest rowny ilosci kolumn\wierszy (il_k_w) to zwraca 0 = koniec a jesli nie to zwraca 1 = kontynuacja
else{
if(tak_w%il_k_w) return 0;
else return 1;
}
troszke objasnienia symboli.
tak_w i tak_k to sa zmienne ktore inkrementuje podczas obrotu pentli jesli warunek jest prawdziwy
il_k_w ilosc kolumn i wierszy w maciezy (maciez kwadratowa)
tabKiK tablica dwuwymiarowa zawierajac maciez o rozmiarze il_k_w
k_j numer danego elementu maciezy kolumna lub wiersz
k_i jak wyzej
w zadaniu chodzi o sprawdzenie warunku czy w danej maciezy wystepuje wiersz/kolumna/przekatna zawiera rowne sobie elementy(wszystkie takie same np w maciezy:
1 1 1
1 2 m
3 5 1
jest to wiersz pierwszy, a w maciezy
1 2 3
0 1 0
0 0 1
jest to jedna z przekatnych
Nie wazne jest czy to przekatna czy wiersz lub kolumna interesuje mnie zwrot wartosci 0 jesli taki element istnieje i wartosci 1 jesli takowego nie ma.
Jeśli macie jakies pytania zastrzeżenia piszcie postaram sie byc bardziej aktywny na forum
______
edit: zmienilem quote na code poniewaz w cytatach nie dzialaja wciecia :]