Schody liczbowe

0

W ciągu liczb naturalnych, schody do dołu tworzy jego podciąg złożony z przynajmniej dwóch liczb, w którym kolejna liczba nie jest większa od poprzedniej i tego ciągu nie można rozszerzyć do innych schodów w dół w jedną albo w drugą stronę. Liczba elementów w takim podciągu jest długością schodów.
Przykład: Ciąg: 3, 9, 7, 7, 6, 7, 8, 9 zawiera schody do dołu 9, 7, 7, 6, o długości 4.
a) Dla następującego ciągu liczb:
2, 2, 2, 3, 1, 1, 3, 11, 7, 7, 6, 7, 7, 9, 9, 7
wypisz występujące w nim schody do dołu i podaj ich długości.
B )
Dane: n – liczba naturalna
ciąg złożony z n liczb naturalnych
W wybranej przez siebie notacji (schemat blokowy, lista kroków, wybrany przez Ciebie język programowania) podaj opis algorytmu, który sprawdza, czy dany ciąg tworzy schody do dołu.
c)
Dane: n – liczba naturalna
ciąg złożony z n liczb naturalnych
W wybranej przez siebie notacji (schemat blokowy, lista kroków, wybrany przez Ciebie język programowania) podaj opis algorytmu, który w danym ciągu liczb znajduje długość najdłuższych schodów do dołu.

Nie zbyt rozumiem to zadanie :<

myslę, że w podpunkcie a będzie tak :
11, 7, 7, 6, czyli takie schody o długości 4?
a reszty nie umiem już zrobić :<
jak w łatwy sposób nauczyć się programowania? i algorytmiki?

0

W jaki sposób do tego doszedłeś? zapisz to w którejś z postaci dostępnej w zadaniu, i to będzie algorytm.

ps Co do nauki programowania, to zakładając że znasz angielski na poziomie co najmniej podstawowym, dobry na początek powinien być python. Tamtejsze polecenia są wzięte wprost z angielskiego, więc nie będzie problemów z składnią. Rób zadania, i w ten sposób się nauczysz.

0

Czy wgl w podpunkcie A dobrze zrobiłam, że będzie 11, 7, 7, 6, czyli schody o długości 4?

Przykład: Ciąg: 3, 9, 7, 7, 6, 7, 8, 9 zawiera schody do dołu 9, 7, 7, 6, o długości 4. ,a co się stanie z 3,7,8,9,?

0

Chyba coś nie tak... masz tam pięć podciągów spełniających te warunki, każdy ma swoją długość:
Ciąg: 2, 2, 2, 3, 1, 1, 3, 11, 7, 7, 6, 7, 7, 9, 9, 7

2, 2, 2 | długości 3
3, 1, 1 | długości 3
11, 7, 7, 6 | długości 4
7, 7 | długości 2
9, 9, 7 | długości 3

imho w tych trzech punktach powinnaś wypisać jak:
a) wypisać wszystkie podciągi wraz z ich długościami (tak jak powyżej)
b) sprawdzić czy taki podciąg spełniający te warunki istnieje (istnieje chociaż jeden)
c) wypisać najdłuższy (czyli 11, 7, 7, 6 i jego długość czyli 4)

0

a no tak, źle po prostu przeczytałam i myślałam, że trzeba znaleźć jeden.

czy takie coś jak w załączniku może być? niestety nie jestem w tym dobra

0

Tak z czystej ciekawości wpisałem treść tego zadania w google (myślałem, że to może zaliczenie...), no ale wyszło mi, że to z zeszłorocznej próbnej matury. Ale przy okazji trafiłem na inny wpis na temat algorytmów autora/autorki tego wątku:

24godzina napisał(a)

Witam, mam mały problem, nie rozumiem paru rzeczy. Jestem laikiem. Na początku do czego służy w algorytmach i w C++ literka i, j, oraz tab[10] Proszę o takie jak najprostsze wytłumaczenie. Co oznacza np. i=i+1

Może spróbuj jednak od jakiegoś prostego kursu, od samych podstaw. Bez tego jakiekolwiek próby zrozumienia/stworzenia jakiegoś algorytnu skończą się fiaskiem.

Ale ok, ad rem... Tak w uproszczeniu, algorytm (wszystko jedno czy w postaci słownej czy graficznej) to przepis, dokładny sposób postępowania, żeby osiągnąć jakiś cel, zrobić jakieś obliczenia itp. Dokładny, na tyle, żeby można było niemyślącemu komputerowi wytłumaczyć "jak to ma zrobić" - przecież on nie zna i nie rozumie treści zadania.

24godzina napisał(a)
  1. Ciag musi składać się z co najmniej dwóch liczb. 2. Druga liczba nie może być większa od pierwszej 3. Znajdz takie liczby 4. Zakoncz

To powyżej to w żadnym przypadku nie jest sposób postępowania, żeby znaleźć rozwiązanie :(

24godzina napisał(a):

jak w łatwy sposób nauczyć się programowania? i algorytmiki?

No cóż... Pisać, rozwiązywać zadania, brać się za następne... Wiedzieć co się robi... Ok, nie dam Ci rozwiązania tego zadania, ale pokażę jak sobie możesz część rozpisać - może się przyda, żeby kontynuować. Ot, taki przypływ dobrego serca i dobrego humoru dzisiaj ;)

Masz dany ciąg, np. 2, 2, 2, 3, 1, 1, 3, 11, 7, 7, 6, 7, 7, 9, 9, 7 - równie dobrze możesz go nazwać tablicą, listą. Po prostu kolejne elementy ustawione w szereg, po którym się możesz poruszać. Możesz pobrać wartość elementu na pozycji 4, możesz wskazać na kolejny element po pobranym itp., prawda? Mam nadzieję, że przynajmniej pojęcie tablicy jest Ci znane...

Jeśli chciałbym znaleźć wszystkie podciągi (kawałki tablicy, listy) w takim ciągu spełniające warunki: podciąg złożony z przynajmniej dwóch liczb, w którym kolejna liczba nie jest większa od poprzedniej i tego ciągu nie można rozszerzyć do innych schodów w dół w jedną albo w drugą stronę mogę to zrobić np. tak w punktach:

//---> Start

0. Mam dany ciąg:
dane = 2, 2, 2, 3, 1, 1, 3, 11, 7, 7, 6, 7, 7, 9, 9, 7, tak że np. zapis dane[1] wyciągnie mi z tego ciągu liczbę 2, zapis dane[5] wyciągnie mi z tego ciągu liczbę 1

1. Tworzę sobie zmienne pomocnicze (będę z nich korzystał w trakcie, będę w nich zapisywał wyniki):
pos -> będzie mi wskazywało na aktualny (badany element ciągu)
tab -> tablica, w której będę zapisywał kolejne elementy ciągu spełniające powyższe warunki
res -> tablica, w której będę zapisywał znalezione podciągi (małe tablice) tab, które spełniają warunki zadania

2. Ustawiam początkowe wartości tych zmiennych:
pos = 1 - wskazuje na drugi element ciągu (to tak dla jasności w tej chwili, zazwyczaj elementy w tablicach indeksuje się od zera, tak że pierwszy element będzie miał indeks = 0
tab += dane[0] do pustej tablicy tab dodaję pierwszy element ciągu (coś na początek, bo od tego momentu będę sobie sprawdzał czy kolejne są mniejsze bądz równe)

3. sprawdzam czy ostatni element dodany do tablicy tab jest większy lub równy elementowi na który wskazuje dane[pos]

A. jeśli tak:
to ten element dane[pos] dodaję na końcu tablicy tab

B. jeśli nie (to oznacza, że koniec schodków):
- sprawdzam, czy ilość elementów dopisywanych do tablicy tab jest większa od 1 (podciąg musi mieć co najmiej dwa elementy)
a: jeśli tak, to zapisuję tablicę tab jako element tablicy res (to jedne "schodki")

  - czyszczę tablicę `tab` (przygotowuję do szukania następnych schodków)
  - jako pierwszy element wyczyszczonej tablicy tab wstawiam `dane[pos]` (Nie spełniał warunku należenia do schodków, ale może będzie początkiem kolejnych)

4. Zwiększam zmienną pos o jeden, tak żeby wskazywała kolejny element ciągu dane

5. Idę do punktu 3

//---> Stop

Notka: to jest tylko taki prymitywny algorytm wyszukiwania podciągów spełniających podane warunki w danym ciągu, nie uwzględnia np. działania w przypadku dojścia do końca badanego ciągu (to trzeba sobie dopisać w jakich warunkach zakończyć pracę ;) )

Ot, chciałem tylko pokazać, jak sobie podejść do problemu, jak go rozpisać. Nie daję gotowców, ale możesz to uznać za wskazówkę "jak się do tego zabrać" :] Mając rozpisany problem w punktach można go sobie spokojnie przenieść już do postaci graficznego algorytmu (albo jakiegokolwiek języka programowania).

Mam nadzieję, że gdzieś się nie walnąłem przy rozpisce :]

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