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);
}
}
#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);
}
}