All pastes #969826 Raw Edit

searching for strgins in matrix

public cpp v1 · immutable
·published 2008-04-03 19:13 UTC
rendered paste body
/*Dla danej macierzy (tablicy dwuwymiarowej) m na n oraz listy słów należy znaleĽć położenie,w którym dane słowo z listy znajduje się w tej macierzy.Elementami macierzy s± pojedyncze litery, duże i małe nie s± rozróżniane.Szukamy w pionie, w poziomie i po ukosie. Dane: 1<=n,m<=50. */#include <iostream>#include <string.h>using namespace std;class Tablica{	char tablica[50][50];	int rozmiar;	string szukaj;	public:		 Tablica(int size);		 void Pokaz();		 void Search(string szukaj);};Tablica::Tablica(int size){	if (size>=50)	{		cout ("ERROR\n");		return(0);	}	rozmiar=size;	for(int i=0; i<rozmiar; i++)		for(int j=0; j<rozmiar; j++)			tablica[i][j]=(char)(rand()%25)+65;}void Tablica::Pokaz(){	cout << "   ";	for(int i=0; i<rozmiar; i++)	{		if(1+i>=10)			cout << i+1 << " ";		else			cout << i+1 << "  ";	}	cout << endl;	for(int i=0; i<rozmiar; i++)	{		if(1+i>=10) cout << i+1 << " ";		else cout << 1+i << "  ";		for(int j=0; j<rozmiar; j++)			cout << tablica[i][j] << "  ";		cout << endl;	}}void Tablica::Search(string szukaj){	for(int i=0; i<rozmiar; i++)	{		for(int j=0; j<rozmiar; j++)		{			if(tablica[i][j]==szukaj.at(0))			{				int ok=1;				for(int n=1; n<(signed)szukaj.length(); n++)				{					if(n+j>=rozmiar) break;					if(tablica[i][j+n]==szukaj.at(n)) ok++;					else break;					if((signed)szukaj.length() == ok)					{						cout << "Przeszukujac tablice od lewej do prawej poziomo trafiłem na ciąg: \""							 << szukaj << "\" w wierszu: " << i+1 <<" kolumnie " <<j+1<<endl;					}				}				ok=1;				for(int n=1; n<(signed)szukaj.length(); n++)				{					if(j-n<0) break;					if(tablica[i][j-n]==szukaj.at(n)) ok++;					else break;					if ((signed)szukaj.length() == ok)					{						cout << "Przeszukujac tablicę od prawej do lewej poziomo trafiłem na ciag: \""							 << szukaj << "\" w wierszu: " << i+1 << " kolumnie " << j+1 << endl;					}				}				ok=1;				for(int n=1; n<(signed)szukaj.length(); n++)				{					if((j+n>=rozmiar)||(i+n>=rozmiar)) break;					if (tablica[i+n][j+n]==szukaj.at(n)) ok++;					else break;					if((signed)szukaj.length()==ok)					{						cout << "Przeszukujac tablicę po skosie w dol trafiłem na ciag: \""							 << szukaj << "\" w wierszu: " << i+1 << " kolumnie " << j+1 << endl;					}				}								ok=1;				for(int n=1; n<(signed)szukaj.length(); n++)				{					if((j-n<0)|| (i-n<0)) break;					if(tablica[i-n][j-n]==szukaj.at(n)) ok++;					else break;					if ((signed)szukaj.length()==ok)					{						cout << "Przeszukujac tablicę po skosie w Gore trafiłem na ciag: \""							 << szukaj << "\" w wierszu: " << i+1 << " kolumnie " << j+1 << endl;					}				}			}		}	}}int main(){	Tablica obiekt(50);	obiekt.Pokaz();	string lancuch;	cout << "\nPodaj łańcuch znaków jaki chcesz wyszukać: ";	cin >> lancuch;	obiekt.Search(lancuch);}