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

Задайте случайным образом массив из N элементов. Выведите его на экран "ёлочкой".

<?php
$nambers = 0; // количество элементов в массиве (чисел), заданных случ образом
$numb = 0; // счетчик чисел 
$key_arr = 1; // ключ очередного числа в массиве

$nambers = rand(1, 20);

for ($i = 1; $i <= $nambers; $i ++) {	
		$numb += 1;
		$arr[$i] = $numb;	
}

for ($j = 1; $j <= $key_arr; $j ++) {
		
	if ($key_arr <= $nambers) {
			
		for ($k = 1; $k <= $j; $k ++) {			
			echo $arr[$key_arr], ' ';
			$key_arr += 1;
				
				if ($key_arr > $nambers) {
						break;
				}
		}
	}
	else {
		break;
	}		
	echo ' ', '<br>';
}
?>

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

vedro-compota's picture

цитата условия + ссылка на список.

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

Исправил

melisa's picture

  1. $nambers = 0;
    • nambers пишется через u
    • излишне объявлять $nambers = 0, т.к. ниже на 2 строки Вы уже присваиваете переменной значение.
  2. $key_arr = 1;

    camelCase

  3. for ($k = 1; $k <= $j; $k ++) {          
                echo $arr[$key_arr], ' ';
                $key_arr += 1;
                     
                    if ($key_arr > $nambers) {
                            break;
                    }
            }

    тут лишние отступы и внутри for, и внутри if

  4. $numb += 1;

    сделайте эту операцию с помощью сокращённого оператора

  5. $numb = 0; // счетчик чисел

    счётчик чисел - комментарий, ничего не поясняющий) как говоритель слов, звонитель звонков, игрок в игры) если уж пишите комментарии, пишите так, чтобы было понятно, каких чисел, например, или для чего они считаются... что-то такое конкретное. а ещё лучше - придумать название переменной, которое будет проливать свет на то, что в ней лежит. Например, $lineNumbersCount или $currentLineNumber

  6. Вы не совсем верно поняли условие.
    Дано:
    Задайте случайным образом массив из N элементов

    Вы сделали:

    Задайте массив из последовательно идущих чисел, начиная с 1, случайной длины

    Переделайте, чтобы было по условию.

<?php /*Задайте случайным образом массив из N элементов. Выведите его на экран "ёлочкой".*/

$keyArr = 1; // ключ очередного элемента в массиве
$numbers = rand(15, 25); // количество элементов в массиве (чисел), заданных случайным образом

for ($i = 1; $i <= $numbers; $i ++) {    
	$arr[$i] = rand(1, 9); // заполняем массив случ цифрами
}

for ($j = 1; $j <= $keyArr; $j ++) { // цикл вывода значений "елочкой"
	
	if ($keyArr <= $numbers) {
             
        for ($k = 1; $k <= $j; $k ++) {          
			echo $arr[$keyArr], ' ';
    		$keyArr ++;
                
                if ($keyArr > $numbers) {
                        break;
                }
        }
    }
    else {
        break;
    }       
    echo ' ', '<br>';
}
?>
melisa's picture

  1. отступы не исправили, о которых выше писала
  2. не нашла, для чего добалено
     else {
            break;
        }

    если без этого корректно всё работает, можно опустить

Да, это условие оказалось перестраховкой.
Излишне, убрал.

<?php /*Задайте случайным образом массив из N элементов. Выведите его на экран "ёлочкой".*/
$keyArr = 1; // ключ очередного элемента в массиве
$numbers = rand(15, 25); // количество элементов в массиве (чисел), заданных случайным образом
 
for ($i = 1; $i <= $numbers; $i ++) {    
    $arr[$i] = rand(1, 9); // заполняем массив случайными цифрами
}

for ($j = 1; $j <= $keyArr; $j ++) { // цикл вывода значений "елочкой"
     
    if ($keyArr <= $numbers) {
              
        for ($k = 1; $k <= $j; $k ++) {          
            echo $arr[$keyArr], ' ';
            $keyArr ++;
			
			if ($keyArr > $numbers) {
				break;
            }
        }
    }      
    echo ' ', '<br>';
}
?>
melisa's picture

принято