Podmacierze

0

Mam do napisania program ktory wczytuje 2-tablice z jednego pliku o maxymalnych wymiarach 5x5. Program ma za zadania porownywanie drugiej tablicy z pierwsza i znalezienia tam podmacierze czyli:

1 3 4 1 3
1 4 5 5 6
1 3 3 4 5
2 3 3 5 6
4 5 6 7 5

33
33

i znajduje w pierwszej macierzy te

33
33

Jak to osiągnąc??
p.s nie interesuje mnie jak otworzyc plik itp. tylko w jakis posob ma dzialac odpowiednia petla to w/w dzialania. Dziekuje za konstruktywne odpowiedzi.

0

Cóż ... może metoda nie jest najszybsza ale zawsze jakas..

Założmy, że masz już wczytane oba macierze to tablicy dwuwymiarowej np takiej:

<font color="green">PS: nie napisałeś w czym programujesz, będe korzystał z języka Pascal</span>

a: array of array of Integer;

I niech będzie to nasza "podmacierz". Tak samo wczytujesz tą większą macierz (max 5x5) .. nazwijmy ją b

b: array of array of Integer;

Najprościej chyba (co jak już wspomniałem nie znaczy najbardziej optymalnie) .. jechać po elementach macierzy b.. Najpierw zaczynając od wierszy - robimy zagnieżdżoną pętle FOR.

for i := 0 to IlośćWierszyW_B
begin
for j := 0 to IloscKolumnW_B
begin
... polecenia...
if z = true then break;
end;

i , j to zmienne typu Integer, będą nam służyły jako liczniki ... Z niech będzie Boolean . jeśli ustawi się na "TRUE" to znak, że znalazł podmacierz i nie ma już dalej szukać...

Teraz samo szukanie , czyli ...polecenia...

Można zrobić na przykład tak: element a[1][1] <font color="blue">(będę operował przez 1 jako pierwszy wiersz / kolumna - jeśli bedzie miał ustawione na 0, to sobie zmienisz)</span> jest wysunięty najbardziej u "góry" i na "lewo" .. prawda? - czyli można pierw szukać jego... - teraz sprawdzasz po prostu czy element b[i][j] = a[1][1] .. jeśli nie - to następny element macierzy b ... jeśli tak:

  • to przechodzimy do nastepnego kroku.. tu już musimy zrobić następną pętelke - pojechać po wszystkich kolumnach aż do końca wiersza pierwszego w macierzy a .. jeśli choć jeden element się nie zgadza - instrukcja Break .. jeśli do końca się wszystkie zgodzą - musisz przejść do następnego wiersza i sprawdzać tak samo (oczywiście wcześniej należało by zapisać numer kolumny, której element zgadza się z elementem a[1][1]) .... Tutraj tak samo.. aż dojdziesz do końca - i mamy gotowe.. teraz tylko z := TRUE, aby więcej nie szukał.

1 użytkowników online, w tym zalogowanych: 0, gości: 1