MATRIX - reaktywacja ... czyli tablice ciąg daszy |
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++ |
Wpisany przez Administrator |
Z tej lekcji dowiesz się:
W poprzednim artykule nauczyliśmy się podstaw operacji na tablicach jednowymiarowych.
Jednak tablica może być na przykład 2-wymiarowa. Tak, jak już wspomniano, tablica wielowymiarowa to tablica tablic. Tak naprawdę każdą tablicę można "rozbić" na tablice jednowymiarowe. Czyli na przykład tablica 2-wymiarowa to jednowymiarowa tablica jednowymiarowych tablic. Jeśli przyjmiemy, że w grze w statki każdy rząd jest tablicą o 10 elementach, to kolumny to tablice rzędów. (zobacz obrazek) Napiszmy program, który generuje tablicę dwuwymiarową 10x10 składającą się z samych zer.
kod programu
Zastosowaliśmy tutaj tzw. zagnieżdżanie pętli, czyli zamieszczenie jednej pętli w drugiej. Nie było to trudne a pozwoliło w 2 linijkach kodu "przelecieć" tablicę 10 na 10 elementów. w praktyce dzieje się tak: pętla wykonywana jest 100 razy:
Ćwiczenie 2: Napisz program, który wypełnia tablicę 5 na 5 elementów liczbami losowymi i wyświetla tą tablicę.
kod dla sprawdzenia zamieszczono na końcu artykułu
ćwiczenie 3: Napisz program, który w tablicy 2-wymiarowej, wygenerowanej losowo, znajduje najmniejszy element. Podpowiedź - analogicznie jak w trakcie poprzedniej lekcji z tablicami jednowymiarowymi.
kod dla sprawdzenia zamieszczono na końcu artykułu
ćwiczenie 4: Napisz program taki, jak w ćwiczeniu 3, jednak zamiast 2 pętli użyj tylko jednej w całym programie. Podpowiedź: Podczas generowania liczb (wewnątrz pętli) od razu na bieżąco następuje porównywanie i wyłonienie najmniejszego elementu oraz zapisywanie jego adresów (rząd oraz komórka). pseudokod pętli: generuj element [i][j] jeśli ten element jest mniejszy niż dotychczasowe minimum to { min_i = i min_j = j min - macierz[i][j] }
ćwiczenie 5:
Napisz program, który w tablicy 2-wymiarowej, wygenerowanej losowo, znajduje największy element. Podpowiedź - analogicznie jak w ćwiczeniu 3. Zobacz też analogiczne zadanie dla tablicy jednowymiarowej w poprzedniej lekcji.
Ćwiczenie 6: Napisz program, który w tablicy 2-wymiarowej, wygenerowanej losowo, znajduje największy element oraz najmniejszy element. Informacje o ich wartościach oraz adresach wyświetlone są w programie. Podpowiedź - analogicznie jak w trakcie poprzedniej lekcji z tablicami jednowymiarowymi. W jednej pętli element jest sprawdzany: czy jest najmniejszy oraz czy jest największy, jeśli tak, to jego dane są zapisane jak tymczasowe minimum lub maksimum. Po zakończeniu sprawdzania ostatnie "tymczasowe" minimum i maksimum staje się automatycznie właściwymi minimum i maksimum.
ćwiczenie 7: Napisz program, który w tablicy 2-wymiarowej, wygenerowanej losowo, znajduje największy oraz najmniejszy element. Informacje o ich wartościach oraz adresach wyświetlone są w programie.Wykorzystaj tylko jedną pętlę.
Podpowiedź - zob. ćw. 4. kod dla sprawdzenia zamieszczono na końcu artykułu
ćwiczenie 8: Napisz program, który na planszy do gry w statki o wymiarach 10 na 10 pól w sposób losowy umieszcza statek "1-masztowy". Tablica wypełniona jest zerami, natomiast statek wyróżniony jest wartością 1;
podpowiedź:
kod dla sprawdzenia zamieszczono na końcu artykułu
Ćwiczenie 9 Napisz program, który na planszy do gry w statki o wymiarach 10 na 10 pól w sposób losowy umieszcza statek "1-masztowy". Tablica wypełniona jest zerami, natomiast statek wyróżniony jest wartością 1. Zadaniem użytkownika jest zatopienie statku w przeciągu 10 prób.Oczywiście, w tym zadaniu program nie wyświetla tablicy statków.
kod programu:
Zauważ bardzo ważny szczegół: instrukcja break: sprawia, że w dowolnym momencie można opuścić pętlę (przerwać wykonywanie pętli) nawet, jeśli warunek kontynuacji jest dalej spełniony - w tym przypadku po zestrzeleniu statku powtarzanie pętli zostaje przerwane, chociaż niekoniecznie użytkownik wykorzystał swoje 10 prób.
Ćwiczenie10: Napisz program, który na planszy do gry w statki o wymiarach 10 na 10 pól w sposób losowy umieszcza 2 statki 1-masztowe. Statki nie mogą się stykać. Program wyświetla dane na monitorze.
(statki oraz elementy w sąsiednich polach, zostały oznaczone kolorami nie w programie, lecz po dokonaniu zrzutu, aby wskazać obszar, w którym program upewnia się, że nie wylosuje kolejnego statku)
podpowiedź: program działa analogicznie jak ten z ćwiczenia 8, jednak trzeba dodać instrukcję upewniającą się, że statki nie stykają się, czyli ich parametry i oraz j nie mogą się jednocześnie różnić o 1.
kod dla sprawdzenia zamieszczono na końcu artykułu
odpowiedzi: ćwiczenie 2:
ćwiczenie 3:
ćwiczenie 4:
ćwiczenie 8:
Ćwiczenie 10:
|