Учебные задачи PHP. Задача 8

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

<?php 
function randomArray($n, $m) 		//двумерный массив размерностью m на n
{
	for ($i = 0; $i < $n; $i ++) { 		// заполняем циклом внешний массив
    	for ($j = 0; $j < $m; $j ++) { 	// заполняем циклом внутрен массив
       		$a = rand(0, 9);
			$arr[$i][$j] = $a; 
    	}     
  	} 
	for ($i = 0; $i < $n; $i ++) { 		// обходим циклом внешний массив
    	for ($j = 0; $j < $m; $j ++) { 	// обходим циклом внутрен массив
       		echo ' | '.$arr[$i][$j]; 	// вывод значений
    	} 
    echo '<br>'; 
	} 
}
randomArray(3, 5); // задаем размер двумерного массива
?>

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

vedro-compota's picture

пусть заполнение массива будет в одной функции а вывод другой - клиентский же код пусть вызывает сначала первую функцию, а потом вторую.

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

<?php
function generateArray($n, $m)
{
    for ($i = 0; $i < $n; $i ++) {       // заполняем циклом внешний массив
        for ($j = 0; $j < $m; $j ++) {   // заполняем циклом внутрен массив
            $arr[$i][$j] = rand(0, 9);
        }     
    }         
    return $arr;
}

function outputArray($arr, $n, $m)
{
    for ($i = 0; $i < $n; $i ++) {    // обходим циклом внешний массив
        for ($j = 0; $j < $m; $j ++) {// обходим циклом внутрен массив
            echo ' | '.$arr[$i][$j];    // вывод значений
        } 
    echo ' |<br>'; 
    }
}

$n = rand(3, 6);
$m = rand(9, 10);
echo '$n = ', $n, "<br>";
echo '$m = ', $m, "<p>";
$array = generateArray($n, $m); 
outputArray($array, $n, $m);
?>
melisa's picture

  1. M и N предлагалось условием задачи вынести в область определения констант. Это значит, объявить M и N как константы. Сделайте так.
  2. Код правильный, рабочий. Давайте сделаем функцию outputArray() более универсальной? Пусть она принимает на вход только двумерный массив, но не знает, какая у него размерность

<?php
function generateArray($n, $m)
{
    for ($i = 0; $i < $n; $i ++) {       // заполняем циклом внешний массив
        for ($j = 0; $j < $m; $j ++) {   // заполняем циклом внутрен массив
            $arr[$i][$j] = rand(0, 9);
        }     
    }         
    return $arr;
}
function outputArray($arrExternal)
{
    foreach ($arrExternal  as $arrInternal) {    // обходим циклом внешний массив
        foreach ($arrInternal as $i) {// обходим циклом внутрен массив
            echo ' | '.$i;    // вывод значений
        } 
    echo ' |<br>'; 
    }
}
$n = 3; // размер двумерного
$m = 6; // массива
$array = generateArray($n, $m); 
outputArray($array);
?>
melisa's picture

$n = 3; // размер двумерного
$m = 6; // массива

$m и $n у Вас - это переменные. Константы - это не переменные.

Про константы почитайте здесь.

function generateArray($n, $m)
{
    for ($i = 0; $i < $n; $i ++) {       // заполняем циклом внешний массив
        for ($j = 0; $j < $m; $j ++) {   // заполняем циклом внутрен массив
            $arr[$i][$j] = rand(0, 9);
        }     
    }         
    return $arr;
}
function outputArray($arrExternal)
{
    foreach ($arrExternal  as $arrInternal) {    // обходим циклом внешний массив
        foreach ($arrInternal as $i) {// обходим циклом внутрен массив
            echo ' | '.$i;    // вывод значений
        } 
    echo ' |<br>'; 
    }
}
const A = 3; // размер двумерного
const B = 6; // массива
$array = generateArray(A, B); 
outputArray($array);
vedro-compota's picture

решение засчитано.

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