Przeczytaj
Napisz program znajdujący maksymalny niemalejący, spójny podciąg w ciągu liczb. Przetestuj jego działanie dla tablicy [6, 7, 1, 3, 4] .
Specyfikacja problemu:
Dane:
liczby
– tablica liczb naturalnychrozmiarTablicy
– liczba naturalna
Wynik:
Na standardowym wyjściu program wyświetla maksymalny niemalejący spójny podciąg.
Porównaj swoje rozwiązanie z przedstawionym w filmie.
Tablica jednowymiarowa – przypomnienie
Tablica jednowymiarowa jest uporządkowanym zbiorem elementów tego samego typu. Są one numerowane (indeksowane). Pierwszy element ma numer 0.
Tablica jednowymiarowa w języku C++
Oto deklaracja – i zarazem definicja – tablicy jednowymiarowej w języku C++:
Definiowanie tablicy rozpoczynamy od wskazania typu danych, które będą w niej przechowywane – w tym przypadku są to liczby całkowite (int
).
Następnie nadajemy nazwę tablicy – niech będzie to przykladowaTablica
. Do nazwy tej będziemy się odwoływać, aby odczytać zawartość tablicy, wpisać konkretną liczbę w określonym miejscu albo wykonać operację na wybranym elemencie.
Za nazwą, w nawiasach kwadratowych, określamy rozmiar tablicy. Jest to liczba elementów, które da się zapisać w tablicy.
W języku C++ istnieją dwa rodzaje tablic. Jednym z nich są tablice statyczne, a drugim – tablice dynamiczne. Rozmiar tablicy statycznej jest ustalany podczas jej tworzenia i nie można go zmienić. W przypadku tablic dynamicznych jest inaczej – ich rozmiar zmienia się w zależności od liczby przechowywanych elementów. W tym e‑materiale będziemy zajmować się tylko tablicami statycznymi.
Przy tworzeniu nowej tablicy, możemy od razu ją wypełnić. Robimy to w następujący sposób:
Jeżeli liczba podanych elementów będzie mniejsza niż rozmiar tablicy, puste pola zostaną wypełnione zerami:
Przedstawiona tablica będzie wyglądać następująco: [3, 6, 9, 0].
Warto zdefiniować zmienną służącą do przechowywania rozmiaru tablicy. Ułatwi to później operowanie na tablicy (np. w pętli for
):
Jeżeli chcielibyśmy podać naszą zmienną rozmiar
bezpośrednio w deklaracji tablicy, musiałaby ona być zadeklarowana jako stała, czyli const
– jej rozmiar nie mógłby zostać zmieniony w trakcie działania programu.
Aby korzystać z tablic, musimy wiedzieć, jak umieszczać w nich dane i w jaki sposób odczytywać zapisane informacje. Przyjmijmy, że na pierwszym miejscu – w zdefiniowanej wcześniej tablicy przykladowaTablica
– chcemy przechować liczbę 33. Robimy to, przypisując elementowi o indeksie 0 wartość 33:
Pamiętajmy, że elementy tablic są numerowane od zera. W przypadku naszej przykładowej tablicy pierwszy element ma indeks 0, a ostatni 9. A zatem po podaniu nazwy tablicy i wprowadzeniu w kwadratowych nawiasach indeksu 0 przypiszemy pierwszemu elementowi wartość 33.
Aby wypisać dane z wybranego elementu tablicy, należy podać jej nazwę wraz z odpowiednim indeksem w nawiasach kwadratowych:
<<< std::endl;
to manipulator strumienia; wstawia znak nowej linii i wymusza zapisanie danych z bufora.
Tablica jednowymiarowa – przykład
Wykonajmy proste zadanie. Z tablicy jednowymiarowej, wypełnionej liczbami, wypiszmy tylko te elementy, które są parzyste. Użyjemy operatora modulooperatora modulo oraz instrukcji warunkowejinstrukcji warunkowej.
Oto szkic rozwiązania w pseudokodzie:
Odczytujemy kolejne elementy tablicy, korzystając z pętli for
i za pomocą instrukcji warunkowej sprawdzamy, czy reszta z dzielenia poszczególnych liczb przez 2 wynosi zero. Jeżeli tak właśnie jest, wypisujemy sprawdzany element na ekranie:
Słownik
element sterujący, który w zależności od spełnienia określonego warunku pozwala dokonać wyboru między różnymi zestawami poleceń
zwraca resztę z dzielenia liczb całkowitych; w języku C++ jest zapisywany za pomocą symbolu %