[PHP] Pętla for oraz if |
[PHP] Pętla for oraz if |
5.11.2017, 08:47:54
Post
#1
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
mam takie zadanko,
sprawdź tablicę znaków np [1,1,3,4] i jeśli można za pomocą zabrania tylko jednego elementu sprawić by ciąg liczb był rosnący zwróć true. zrobiłem to tak
ale to niestety nie działa, wychodzi mi z pętli po jednym elemencie... coś robię nie tak.. ja to wymyśliłem tak, sprawdź każdy element w tablicy i porównaj każdy kolejny z poprzednim i jeśli poprzedni jest większy od następnego to zwiększ licznik, jeśli licznik będzie większy niż 1 tzn, że mam więcej niż jedną liczbę... poproszę o jakieś sugestie a nie gotowe rozwiązanie, z góry dziękuję |
|
|
5.11.2017, 11:30:52
Post
#2
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
1. pętle for nie możesz zacząć od 0, skoro szukasz poprzednika.
2. tworzysz tablicę dla zmiennych $a i $b, a później porównujesz tak jakby to były wartości skalarne 3. bardziej optymalnie będzie wyjść z pętli w przypadku znalezienia dwóch liczb, które nie spełniają warunku, by nie iterować całej tablicy Założenia: wartości przekazane do metody są posortowane rosnąco tablica co najmniej dwóch elementów
|
|
|
5.11.2017, 17:23:42
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
dziękuję za sugestie przede wszystkim co do pamiętania o tym by trzymać się odpowiednich zmiennych... kod super - widać poziom! ale mam jeden problem, że w momencie tablicy np:
sequence: [1, 2, 1, 2] daje nam wynik: true a powinno false, ponieważ niby ma tylko jedna niepasującą/większą ale to nie zmienia ciągu ponieważ jak wyrzucimy to 2 to i tak nie będzie w pełni rosnący... oczywiście próbuje to rozwiązać sam tylko nadmieniam o tym iż jest taka sytuacja. pozdrawiam |
|
|
5.11.2017, 17:34:01
Post
#4
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
Dlatego dodałem założenia, że: "wartości przekazane do metody są posortowane rosnąco", czyli nie może być to tablica [1, 2, 1, 2], ale [1, 1, 2, 2], czyli albo zrób sort w tej metodzie, jeśli przekazujesz dane niesprawdzone albo wcześniej zrób sort.
|
|
|
5.11.2017, 22:25:55
Post
#5
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) |
Inne rozwiązanie:
|
|
|
5.11.2017, 22:57:04
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A czy na pewno posortowanie danych przed sprawdzeniem ciągu jest poprawne?
Bo wydaje mi się, że rzecz w tym, aby sprawdzić ciąg nieposortowany.
Ten post edytował trueblue 5.11.2017, 23:02:57 -------------------- |
|
|
6.11.2017, 16:08:56
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
posortowanie raczej odpada moim zdaniem... nic nie wnosi albo tego nie rozumiem...
odpowiedz kreatiffa także jest błędna ponieważ wysypuje się na tablicy - [1, 3, 2, 1] zrobiłem coś takiego, sprawdza czy tablica nie ma duplikatów i porównuje je ale... znowu jest problem ponieważ gdy mamy tablice [1,3,2] to spełnia wszystkie te warunki a odpowiedz jest zła ponieważ jeśli zabierzemy 2 lub 3 to ciąg będzie rosnący... a on daje false, ponieważ nie ma duplikatów i raz znajduje większy poprzdeni wiersz... niby to proste ale nie za proste dla mnie...
Ten post edytował hunter777 6.11.2017, 16:12:10 |
|
|
6.11.2017, 16:12:15
Post
#8
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
Sortowanie odpada, gdyż?
|
|
|
6.11.2017, 19:48:17
Post
#9
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
Poniewaz sortowanie zakłamuje tablice. Zalozmy, że posiadamy tablice [1,5,2,4,3] to sort zrobi [1,2,3,4,5] i wyjdzie nam true a powinno false.
|
|
|
6.11.2017, 20:23:19
Post
#10
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 26 Dołączył: 13.09.2007 Skąd: Gdańsk Ostrzeżenie: (0%) |
Myślałem, że chcesz osiągnąć coś innego na początku. Zobacz ten kod:
Zwraca FALSE jeśli się nie da uzyskać ciągu albo indeks, jaki należy usunąć, by otrzymać ciąg rosnący - może zwrócić 0. Też kwestia co powinno zwracać w przypadku przekazania ciągu 1 elementowego albo 2 elementowego, ale to już sobie możesz obsłużyć. Ten post edytował sabat24 6.11.2017, 20:26:06 |
|
|
6.11.2017, 20:50:16
Post
#11
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
Bede testował ten kod - dziekuje.
Coś takze jest nie tak ze składnia chyba ale nie wiem co ponieważ teraz powinien na ciągu[1,2,1,2] dać false ponieważ nie ma unikalnego ciągu a daje mi true i już zgłupiałem
|
|
|
7.11.2017, 08:10:28
Post
#12
|
|
Grupa: Zarejestrowani Postów: 460 Pomógł: 49 Dołączył: 5.06.2011 Ostrzeżenie: (0%) |
Może to
https://3v4l.org/2CZ2N Ten post edytował trzczy 7.11.2017, 08:15:17 |
|
|
8.11.2017, 13:38:54
Post
#13
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
kolejna próba rozwiązania poniżej:
próbuję to teraz zrobić sam jak powyżej, ale coś mi to nie wychodzi, można w ogóle dać 3 warunki do if? chciałem wyeliminować liczby w których większa liczba poprzedzająca występuje więcej niż 1 raz($a > 1) i ciąg jest unikalny czyli nie mamy powtórzeń liczb ($f = false) i na koniec mamy to czy tablica jest posortowana ponieważ wtedy też nie da się zrobić rosnącego zbioru ($m = 1) ale gdy kiedyś uczyłem się o logice to nie kojarzę 3 zmiennych tylko dwie... może ktoś doświadczony mnie naprowadzi... chyba nici z mojego programowania jak takie zadanie mnie wykańcza Ten post edytował hunter777 8.11.2017, 13:40:17 |
|
|
8.11.2017, 14:29:02
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
W linii 25 są dwa błędy.
-------------------- |
|
|
8.11.2017, 21:16:14
Post
#15
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
Chodzi o to iż zliczam a zamiast pętle? I mają być or a nie and?
I tak niestety jest źle pomimo różnych zmian... |
|
|
8.11.2017, 21:19:45
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Tam porównujesz czy przypisujesz?
-------------------- |
|
|
9.11.2017, 15:16:04
Post
#17
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 8.02.2017 Ostrzeżenie: (0%) |
tak powinno być ==, dziękuję
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 23:26 |