Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wypisanie w kolejności nierosnące 3 liczby
victor_19
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Wypisanie w kolejności nierosnące 3 liczby. Czy jest inny sposób na krótszy kod?


  1. $a = 1;
  2. $b = 2;
  3. $c = 4;
  4.  
  5. if($a>$b)
  6. {
  7. if($b>$c)
  8. {
  9. echo '$a='.$a;
  10. echo '$b='.$b;
  11. echo '$c='.$c;
  12. }
  13. else
  14. {
  15. echo '$a='.$a;
  16. echo '$c='.$c;
  17. echo '$b='.$b;
  18. }
  19. }
  20. elseif($b>$a)
  21. {
  22. if($a>$c)
  23. {
  24. echo '$b='.$b;
  25. echo '$a='.$a;
  26. echo '$c='.$c;
  27. }
  28. else
  29. {
  30. echo '$b='.$b;
  31. echo '$c='.$c;
  32. echo '$a='.$a;
  33.  
  34. }
  35. }
  36. elseif($c>$b)
  37. {
  38. if($b>$a)
  39. {
  40. echo '$c='.$c;
  41. echo '$b='.$b;
  42. echo '$a='.$a;
  43. }
  44. else
  45. {
  46. echo '$c='.$c;
  47. echo '$a='.$a;
  48. echo '$b='.$b;
  49. }
  50. }
  51.  
  52. elseif($c<$b)
  53. {
  54. if($b>$a)
  55. {
  56. echo '$c='.$c;
  57. echo '$b='.$b;
  58. echo '$a='.$a;
  59. }
  60. else
  61. {
  62. echo '$c='.$c;
  63. echo '$a='.$a;
  64. echo '$b='.$b;
  65. }
  66. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czy jest inny sposób na krótszy kod?
Tak, najpierw sortowanie, potem wyswietlanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wicepsik
post
Post #3





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Wrzuć to do tablicy i skorzystaj z asort


--------------------
Go to the top of the page
+Quote Post
victor_19
post
Post #4





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Chodzi o funkcję sort()? Na początek chcę spróbować pisać samemu bez wpisania wbudowanych funkcji
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Na początek chcę spróbować pisać samemu bez wpisania wbudowanych funkcji
To w takim razie zacznij naukę assemblera smile.gif

Jak masz awersje do funkcji to zrob jak mowilem. Najpierw posortuj (do tego zadna funkcja nie jest potrzebna tylko odrobina pomyslunku. Wkoncu to tylko 3 zmienne....) a potem wyswietlaj. A nie jak ty teraz w kazdym kroku masz wyswietlanie. Porazka jakas.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
victor_19
post
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Z czym jest porażka?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No z tymi 8-mioma bloczkami do wyswietlania. Do wyswietlania powinien byc tylko jeden bloczek, juz po posortowaniu. No juz trzeci raz ci to mowie. a mowie ci to w odpowiedzi na pytanie : "czy mozna krocej". Tak mozna, krocej: wyswietlac raz a nie 8.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
victor_19
post
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Hmm... jakoś nic mi nie wchodzi do głowy jak to napisać krócej. Mógłbym prosić o wskazówki?
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Mógłbym prosić o wskazówki?
Ok. To zacznijmy od malych kroczkow. Będą ich dwa. W tym poscie zajmijmy się kroczkiem nr 1:

Kroczek nr 1
Posortuj najpierw te liczby.
Masz 3 liczby. Musisz je posortować. Umiesz?

Pseudokod:
- jesli a > b wowczas b staje sie a, a staje sie b
- jesli b > c wowczas b staje sie c, c staje sie b
- i znowy jesli a > b wowczas b staje sie a, a staje sie b


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
victor_19
post
Post #10





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


  1. $tablica[0]=7;
  2. $tablica[1]=3;
  3. $tablica[2]=1;
  4.  
  5. for ($i=0;$i<=3;$i++)
  6. {
  7. for ($j=0;$j<=3;$j++)
  8. {
  9. if ($tablica[$j]>$tablica[$j+1])
  10. {
  11. $tmp = $tablica[$j];
  12. $tablica[$j] = $tablica[$j+1];
  13. $tablica[$j+1] = $tmp;
  14. }
  15. }
  16. }
  17. for ($i=0; $i<=4; $i++)
  18. {
  19. echo "$tablica[$i]";
  20. echo "<br />";
  21. }


Chodzi o takie sortowanie?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jakim cudem z tego kodu:
Cytat
- jesli a > b wowczas b staje sie a, a staje sie b
- jesli b > c wowczas b staje sie c, c staje sie b
- i znowy jesli a > b wowczas b staje sie a, a staje sie b
doszedles do tego co pokazales? Wspominalem gdzies cos o petli? O tablicy?

Weź uzyj tego asort i po sprawie smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
victor_19
post
Post #12





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Tak, użyłem sortowania bąbelkowego.

nospor@ - jak wyglądał Twój sposób tego kodziku?

Ten post edytował victor_19 22.12.2010, 18:41:40
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Tak, użyłem sortowania bąbelkowego.
Ja sie nie pytam czego uzyles tylko jakim cudem z mojego kodu doszedles do tamtego winksmiley.jpg
Kolejna zagwostka: masz 3 elementy a iterujesz po 4 winksmiley.jpg Wlacz wyswietlanie wszystkich bledow a zaroi sie od NOTICEow

Cytat
nospor@ - jak wyglądał Twój sposób tego kodziku?
Dokladnie tak jak napisalem. Nic dodac, nic ujac. Zadnej petli czy tablic winksmiley.jpg

ps: no nie mniej jednak + dla Ciebie za fakt, ze slyszales o sortowaniu babelkowym i ze prawie udalo ci się go dobrze napisac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
victor_19
post
Post #14





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Kod z pierwszego postu był zły - Przepraszam.

Znalazłem coś podobnego w necie

  1. $a = 2;
  2. $b = 3;
  3. $c = 1;
  4. if($a>$b)
  5. {
  6. if($b>$c)
  7. {
  8. echo '$a='.$a;
  9. echo '$b='.$b;
  10. echo '$c='.$c;
  11. }
  12. elseif($a>$c)
  13. {
  14. echo '$a='.$a;
  15. echo '$c='.$c;
  16. echo '$b='.$b;
  17. }
  18. else
  19. {
  20. echo '$c='.$c;
  21. echo '$a='.$a;
  22. echo '$b='.$b;
  23. }
  24. }
  25. elseif($a>$c)
  26. {
  27. echo '$b='.$b;
  28. echo '$a='.$a;
  29. echo '$c='.$c;
  30. }
  31. else
  32. {
  33. if($b>$c)
  34. {
  35. echo '$b='.$b;
  36. echo '$c='.$c;
  37. echo '$a='.$a;
  38. }
  39. else
  40. {
  41. echo '$c='.$c;
  42. echo '$b='.$b;
  43. echo '$a='.$a;
  44. }
  45. }


Nie da się już napisać krócej bez wbudowanej funkcji i sortowania bąbelkowego?

Ten post edytował victor_19 23.12.2010, 10:40:02
Go to the top of the page
+Quote Post
lobopol
post
Post #15





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


  1. kolejność 1,2,3
  2. $a =1;
  3. $b =7;
  4. $c =5;
  5. if($a >$c){
  6. $temp = $a;
  7. $a = $c;
  8. $c = $temp;
  9. }
  10. if($a>$b){
  11. $temp = $a;
  12. $a = $b;
  13. $b = $temp;
  14. }
  15. if($b >$c){
  16. $temp = $b;
  17. $b = $c;
  18. $c = $temp;
  19. }
  20.  
  21. echo $a.' '.$b.' '.$c;
  22. kolejność 3,2,1
  23. echo $c.' '.$b.' '.$a

a znacznie lepiej użyj sort (tak to to co nospor napisał)

Ten post edytował lobopol 23.12.2010, 20:00:21


--------------------
Go to the top of the page
+Quote Post
victor_19
post
Post #16





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.11.2010

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


Jak to zrobić za pomocą foreach?

  1. $tablica = array(4, 2, 3, 17);
  2. $a=0;
  3. foreach ($tablica as $tab)
  4. {
  5. $a++;
  6. echo $a;
  7. }
  8.  
Go to the top of the page
+Quote Post
thek
post
Post #17





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Żartobliwie patrząc... Skoro ma być to ciąg nierosnący, to znaczy, że nie może zajść sytuacja, by pomiędzy wszystkimi krokami elementy były większe. Może jednak z takiego wnioskowania wynikać, że wystarczy choć jedno miejsce, gdzie ciąg maleje, a staje się on nierosnący. Jaki z tego wniosek? Użyj array_rand by elementy ustawiły się losowo, a będziesz miał ciąg nierosnący winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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: 22.08.2025 - 02:41