Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pętla for oraz if
hunter777
post
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

  1. function almostIncreasingSequence($sequence) {
  2. $t = $sequence;
  3. $j = count($sequence);
  4.  
  5.  
  6.  
  7. for ($i=0; $i<$j; $i++) {
  8. $a[$i] = $t[$i];
  9. $b[$i] = $t[$i-1];
  10.  
  11. if ($b > $a) {
  12. $c = $c++;
  13.  
  14. return $c; }
  15. }
  16.  
  17. }
  18. if ($c > 2) {
  19.  
  20. return false;
  21.  
  22. } else {
  23.  
  24. return true;
  25. }


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ę
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hunter777
post
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 8.02.2017

Ostrzeżenie: (0%)
-----


kolejna próba rozwiązania poniżej:

  1. function almostIncreasingSequence($sequence) {
  2. $t = $sequence;
  3. $j = count($sequence);
  4. // $s= sort($t);
  5.  
  6.  
  7.  
  8. for ($i=0; $i<$j; $i++) {
  9. $a[$i] = $t[$i];
  10. $b[$i] = $t[$i+1];
  11.  
  12. if (($b[$i] != null) and ($a[$i] >= $b[$i])) {
  13. unset($a[$i]);
  14.  
  15. }
  16. }
  17. $d = $a;
  18. $e = array_unique($d);
  19. $f = $a == $e;
  20. $k = $a;
  21. $l = sort($k);
  22. $m = $a == $k;
  23.  
  24.  
  25. if (($a > 1) and ($f = false) and ($m = false)) {
  26.  
  27. return false;
  28. } else
  29. {
  30. return true;
  31. }
  32. }


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... (IMG:style_emoticons/default/sad.gif) chyba nici z mojego programowania jak takie zadanie mnie wykańcza (IMG:style_emoticons/default/sad.gif)

Ten post edytował hunter777 8.11.2017, 13:40:17
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 09:25