[ peromalosutra @ 16.05.2006. 21:18 ] @
Sad napravih neki zadatak koji računa broj grupa jedinica u matrici i kad sam tu matricu stavio na slobodnu memoriju ... otad program ne radi. Dakle problem je 100% do matrice ali namjerno nisam htio da je napravim na steku, u inat! :-) Code: #include <iostream> #include <fstream> using namespace std; void findObject(int i, int j, int k, int **mat); int main(void) { int n; ifstream in("input\\MATRIX.txt"); in >> n; char tmp[n]; //matrica na slobodnoj memoriji int **mat = new int*[n]; for (int i=0; i<n; i++) mat[i] = new int[n]; //učivanje matrice for (int i=0; i<n; i++) { in >> tmp; for (int j=0; j<n; j++) { if (tmp[j]=='0') mat[i][j]=0; else mat[i][j]=-1; } } in.close(); //obrada int k=1; for (int i=0; i<n; i++) for (int j=0; j<n; j++) if (mat[i][j]==-1) { findObject(i,j,k,mat); k++; } //ispis matrice for (int i=0; i<n; i++, cout << endl) for (int j=0; j<n; j++) if (mat[i][j]!=0) cout << mat[i][j]; else cout << "."; cout << "\nBroj likova u matrici: " << k-1 << "\n"; system ("pause"); return 0; } /* funkcija rekurzivno pronalazi skup jedinica u matrici i,j - koordinate člana matrice koji pripada liku k - indeks trenutnog lika u matrici */ void findObject(int i, int j, int k, int **mat) { if (mat[i][j+1]==-1) { mat[i][j+1]=k; findObject(i,j+1,k,mat); } if (mat[i][j-1]==-1) { mat[i][j-1]=k; findObject(i,j-1,k,mat); } if (mat[i+1][j]==-1) { mat[i+1][j]=k; findObject(i+1,j,k,mat); } if (mat[i-1][j]==-1) { mat[i-1][j]=k; findObject(i-1,j,k,mat); } } |