Задача №8.

Задача из списка.
Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант), заполнить его случайными значениями и вывести их на экран уже после того, как весь массив будет заполнен (т.е. заполнять и выводить в разных группах циклов).


<?php
function arr_n_m($n, $m)
{
$m_n = array($n, $m);

    for($i = 0; $i < count($m_n); $i++) {
       for($j = 0; $j < count($m_n[$i]); $j++) {
          $m_n[$i][$j] = rand(-100, 100);
       }
    }

    for($i = 0; $i < count($m_n); $i++) {
       for($j = 0; $j < count($m_n[$i]); $j++) {
          echo ' | '. $m_n[$i][$j];
       }
       echo "<br/>";
    }
}

const N = 7;
const M = 3;
$n = array_pad([], N, 0);
$m = array_pad([], M, 0);
arr_n_m($n, $m);
?>

Key Words for FKN + antitotal forum (CS VSU):

<?php
    const N = 7;
    const M = 3;
    $n = array_pad([], N, 0);
    $m = array_pad([], M, 0);
    $m_n = array($n, $m);
    print_r($m_n);

Это не массив 3x7:

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
            [3] => 0
            [4] => 0
            [5] => 0
            [6] => 0
        )

    [1] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )

)

sid's picture

Исправлено.

<?php

function arr_n_m($n, $m)
{
    for($i = 0; $i < count($n); $i++) {
       for($j = 0; $j < count($m); $j++) {
          $mn[$i][$j] = rand(-100, 100);
       }
    }

    foreach($mn as $mn1) {
        foreach($mn1 as $value) {
               echo ' | '.$value;
        }
        echo "<br>", "<br>";
    }
}

define ("N", 6);
define ("M", 3);
$n = array_pad([], N, 0);
$m = array_pad([], M, 0);
arr_n_m($n, $m);
?>

melisa's picture

Всё работает, но можно объединить создание и заполнение массива:

function arr_n_m($n, $m)
{
    define ("N", $n);
    define ("M", $m);
    for($i = 0; $i < N; $i++) {
       for($j = 0; $j < M; $j++) {
          $mn[$i][$j] = rand(-100, 100);
       }
    }
 
    foreach($mn as $mn1) {
        foreach($mn1 as $value) {
               echo ' | '.$value;
        }
        echo "<br>", "<br>";
    }
}
arr_n_m(7, 3);
sid's picture

Спасибо.

vedro-compota's picture

function arr_n_m($n, $m)
{
    define ("N", $n);
    define ("M", $m);
    for($i = 0; $i < N; $i++) {
       for($j = 0; $j < M; $j++) {
          $mn[$i][$j] = rand(-100, 100);
       }
    }
  
    foreach($mn as $mn1) {
        foreach($mn1 as $value) {
               echo ' | '.$value;
        }
        echo "<br>", "<br>";
    }
}
arr_n_m(7, 3);

Константы вообще не ясно зачем использовать. Можно и без них.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Рекомендую создание массива случайных чисел делать одной функцией (return) а вывод его на экран уже другой.

_____________
матфак вгу и остальная классика =)

sid's picture

Исправил.

<?php
//Функция формирования массива.
function arr_n_m($n, $m)
{
define("N", $n);
define("M", $m);
    
    for($i = 0; $i < N; $i++) {
       for($j = 0; $j < M; $j++) {
          $mn[$i][$j] = rand(-100, 100);
       }
    }
    return $mn;
}
//Функция отображения массива.
function show_arr($mas)
{
    foreach($mas as $i) {
        foreach($i as $j) {
               echo ' | '. $j;
        }
        echo "<br>";
    }
}

$mas = [];//аргумент массив.
show_arr(arr_n_m(6, 3));
?>

Рекомендую создание массива случайных чисел делать одной функцией (return) а вывод его на экран уже другой.

sid's picture

Можно так:

<?php

function arr_n_m($n, $m)
{
    for($i = 0; $i < count($n); $i++) {
       for($j = 0; $j < count($m); $j++) {
          $mn[$i][$j] = rand(-100, 100);
       }
    }
    return $mn;
}

define ("N", 6);
define ("M", 3);
$n = array_pad([], N, 0);
$m = array_pad([], M, 0);
echo "<pre>";
print_r(arr_n_m($n, $m));
echo "</pre>";
?>

sid's picture

Можно еще проще, но я не знаю как передать константу в функцию.