Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] min i max z tablicy dwuwymiarowej
medzie
post 24.01.2021, 00:54:06
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 24.01.2021

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


Witam, dopiero zaczynam php a niestety od razu nauczyciel rzuca na głęboką wodę i gubię się w tym.
Mam do wykonania skrypt, który wyświetli tablicę dwuwymiarową (dowolnie wypełnioną liczbami) (3 × 3),
która obliczy i wyświetli wartość maksymalną i minimalną elementów tablicy

Próbowałam już różnych kombinacji (w tym ify,min(),max()) ale końcowo nic nie działało, więc wrzucam pierwszy kod. Prosiłabym o nakierowanie jak mam się za to zabrać bo nie mam już żadnych pomysłów.
Za każdym razem bierze ostatnią liczbę lub kolumnę/wiersz, czasami losowo.. Z góry dziękuję za pomoc.

  1. $tab=array();
  2.  
  3. for ($i=0;$i<3;$i++) //wiersze
  4. {
  5. for ($j=0;$j<3;$j++) //kolumny
  6. {
  7. $tab[$i][$j]=rand(1,9);
  8. $minimum=$tab[$i][$j];
  9. $maximum=$tab[$i][$j];
  10. $minimum==min($tab);
  11. $maximum==max($tab);
  12. }
  13. }
  14.  
  15. //wyświetlenie tablicy
  16. for ($i=0;$i<3;$i++)
  17. {
  18.  
  19. for ($j=0;$j<3;$j++)
  20. {
  21. echo $tab[$i][$j].'&nbsp;&nbsp;&nbsp;';
  22. }
  23. echo '<br>';
  24. }
  25.  
  26. echo 'minimum: '; echo $minimum;
  27. echo '<br>maximum: '; echo $maximum;
Go to the top of the page
+Quote Post
trueblue
post 24.01.2021, 08:06:45
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jaki sens mają linie 10 i 11?

Podpowiedź: jeśli jakaś wartość jest większa od A, to być może jest maksimum. A jeśli jakaś wartość jest mniejsza od B, to być może jest minimum.

P.S. Całość możesz zrobić w jednej pętli - dodawać wartości, wyświetlać je i sprawdzać czy dana wartość jest minimum czy maksimum.


--------------------
Go to the top of the page
+Quote Post
YourFrog
post 28.01.2021, 14:16:54
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


Cześć,

Poniżej kawałek kodu prezentujący jak to można zrobić. Starałem się specjalnie wydzielić to do różnych funkcji aby łatwiej Ci było zrozumieć kod. Zgadzam się z przedmówcą że najlepiej wydajnościowo to robić w pętli generującej tablice jednak czasami zachodzi potrzeba napisania kodu wielokrotnego użytku.

  1. <?php
  2.  
  3. /**
  4.  * Generujemy tablice o żądanej wielkości
  5.  *
  6.  * @param int $width Ilość kolumn
  7.  * @param int $height Ilość wierszy
  8.  * @param $callback Funkcja generująca wartość w polu
  9.  *
  10.  * @return array
  11.  */
  12. function generateMatrix(int $width, int $height, $callback): array
  13. {
  14. $result = [];
  15.  
  16. for($columnIndex = 0; $columnIndex < $width; $columnIndex++) {
  17. for($rowIndex = 0; $rowIndex < $height; $rowIndex++) {
  18. $result[$columnIndex][$rowIndex] = $callback();
  19. }
  20. }
  21.  
  22. return $result;
  23. }
  24.  
  25. /**
  26.  * Wyszykujemy minimalną i maksymalną wartość w tablicy
  27.  *
  28.  * @param array $matrix Wynik funkcji generateMatrix
  29.  *
  30.  * @return array Tablica z kluczami min i max
  31.  */
  32. function searchExtremeInMatrix(array $matrix): array
  33. {
  34. $result = [
  35. 'min' => null,
  36. 'max' => null
  37. ];
  38.  
  39. foreach($matrix as $column) {
  40. foreach($column as $value) {
  41. $result['min'] = $value < $result['min'] || $result['min'] == null ? $value : $result['min'];
  42. $result['max'] = $value > $result['max'] || $result['max'] == null ? $value : $result['max'];
  43. }
  44. }
  45.  
  46. return $result;
  47. }
  48.  
  49. /**
  50.  * Rysujemy tablice twu wymiarową na ekranie
  51.  */
  52. function drawTwoDimensionMatrix(array $matrix) {
  53. foreach($matrix as $column) {
  54. foreach($column as $row) {
  55. echo '..' . $row;
  56. }
  57.  
  58. echo PHP_EOL;
  59. }
  60. }
  61.  
  62. // Generujemy tablice
  63. $matrix = generateMatrix(3, 3, fn() => rand(1, 9));
  64.  
  65. // Szukamy skrajnych wartości
  66. $extreme = searchExtremeInMatrix($matrix);
  67.  
  68. // Wyświetlamy wyniki
  69. echo 'Graphics presentation matrix' . PHP_EOL;
  70. drawTwoDimensionMatrix($matrix);
  71.  
  72. echo PHP_EOL;
  73. echo 'Minimum: ' . $extreme['min'] . PHP_EOL;
  74. echo 'Maximum: ' . $extreme['max'];
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 Wersja Lo-Fi Aktualny czas: 29.03.2024 - 09:20