Задача №1 - Вывести на экран N случайных чисел.

Задачи из этого этого списка.

<?php
/* Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
ПРИМЕЧАНИЕ: подразумевается, что вы должны организовать цикл, который выполнится N раз и при этом в каждом своём витке выведет на экран случайное число.*/

$N = 20;

    # Формируем массив в цикле
    
    for( $i = 0; $i <= $N; $i++ )
    {
        $value = rand( -21, 35 ); 
    
            $array[] = $value;
    }
    
    # Выводим содержимое массива
    
    foreach( $array as $value )
    
    echo $value . '<br />';   
?>

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

vedro-compota's picture

Просьба добавить:

  1. Обратную ссылку на список задач,
  2. проставить ключевые слова

в последующих задачах аналогично (из рекомендаций по оформлению).

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

Pavel1989's picture

Сделал.

vedro-compota's picture

  1. Неверно форматирование для foreach (нет отступа в блоке)
  2. Нет фигурных скобок для того же оператора (psr-2 требует их наличия даже если в теле конструкции один оператор)
  3. неясно почему весь код сдвинут на таб после $N = 20; -- это не нужный отступ

Здесь и далее исправленный код (то что не относится к оформлению задачи, не связанному с блоком кода), выкладывайте в комментарии, чтобы было понятно что было и что стало.

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

melisa's picture

Оформление кода

  1. Открывающие скобки в if, for, foreach должны быть на той же строке, что и условие, см. psr
  2. Лишний отступ в 13 строке.
            $value = rand( -21, 35 ); 
         
                $array[] = $value;

Не смущайтесь, что много замечаний по оформлению - очень скоро вы запомните все правила, и они будут для вас естественными :) А пока, сверяйтесь со стандартом оформления кода, PSR, общим для всех php-программистов. Это обязательные к выполнению правила. Общяя стилистика написания выработана с целью облегчить чтение чужого кода.

Суть

  1. На экран выводится N+1 случайных чисел. Требуется N.

Пожалуйста, если вы сами заметите аналогичные ошибки в уже опубликованых вами ранее задачах, исправьте их и там.

Pavel1989's picture

<?php
/* Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
ПРИМЕЧАНИЕ: подразумевается, что вы должны организовать цикл, который выполнится N раз и при этом в каждом своём витке выведет на экран случайное число.*/

$N = 20;

# Формируем массив в цикле
    
for ( $i = 0; $i < $N; $i++ ) {
    $value = rand( -21, 35 ); 
    $array[] = $value;
}
    
# Выводим содержимое массива
    
foreach ( $array as $value ) {
    echo $value . '<br />';
}   
?>
melisa's picture

Если $N = 0, первый цикл не выполнится ни разу, и переменная $array не будет инициализирована. Наткнувшись на неё в 16 строке, скрипт выдаёт предупреждение:

E_NOTICE : type 8 -- Undefined variable: array -- at line 16

Нужно

  1. либо инициализоровать $array вне цикла for:
    $array = [];
    
    for ( $i = 0; $i < $N; $i++ ) {
        $value = rand( -21, 35 ); 
        $array[] = $value;
    }
    
    //...

    тогда, в условие foreach попадёт не Undefined variable, а пустой массив, и ошибки не возникнет

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

Поэкспетементируйте и предложите конечный вариант.

Pavel1989's picture

<?php
/* Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
ПРИМЕЧАНИЕ: подразумевается, что вы должны организовать цикл, который выполнится N раз и при этом в каждом своём витке выведет на экран случайное число.*/

$N = 20;
$array = [];

# Формируем массив в цикле
    
for ( $i = 0; $i < $N; $i++ ) {
    $value = rand( -21, 35 ); 
    $array[] = $value;
}
    
# Выводим содержимое массива
    
foreach ( $array as $value ) {
    echo $value . '<br />';
}   
?>