Другие языки программирования и технологии

Я начинающий программист, так что пока не очень смыслю в этом деле. Помогите плиз найти ошибки в коде. Язык php.

<?php

$i = 0;
$app = null;
$k = 0;
$rez = null;

for (i !=101)

{
If ($k%10 >= 5) or ($k == 0) or ($k%10 == 0);
{
$app = 'яблок';
}
If ($k == 2) or ($k == 3) or ($k == 4)
{
$app = 'яблока';
}
If ($k == 1) or ($k%10 == 1)
{
$app = 'яблоко';
}

$rez = $i . $app;
$i++;

}

?>
Юрий 111
Юрий 111
29
У вас к сожалению весь код написан не верно
1) php не требует объявления переменных
эта конструкция не нужна
**************
$i = 0;
$app = null;
$k = 0;
$rez = null;
**************

2) Счетчик цикла for, работает не так и принимает три параметра
начальное значение, условие, шаг цикла.
пример для вас for ( i=1; i<102; i++ )

3) условие внутри if должно находится в скобках, это обусловлено простой логикой, оно либо истинно либо ложно, при истине условие выполняется, if (условие OR условие) - если хотя бы одно из условий будет истинно, проверка остановится и код будет выполнен. В вашем случае, так же можно опустить скобки для конкретных условий, они там не нужны.

4) Нет вывода на экран, простите, что вы вообще хотели увидеть? За вывод на экран отвечает echo

5) Для чего там переменная $k какая у нее вообще функция если она у вас всегда равна нулю?

6) i в цикле должна быть написана как переменная $

7) после условия if не ставится ; а сразу открывается {

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

<?php

for ($i = 1; $i<102; $i++ ) {

if ( $i%10 >= 5 OR $i == 0 OR $i%10 == 0) {
$app = 'яблок';
}

if ($i == 2 OR $i == 3 OR $i == 4) {
$app = 'яблока';
}

if ($i == 1 OR $i%10 == 1) {
$app = 'яблоко';
}

echo $i.$app."
";

}

?>

Выполните его.... Но! Он работает не так как нужно, не так ли? Из вашего кода убраны все ошибки, но проблема кроется глубже, она в алгоритме. Действительно слово "яблока" встречается не только на 2 3 4, но и на 22, 23, 24 проходе цикла, а так же 32, 43, 54, 62, 73, 84. Опытным путем мы выясняем, что "яблока" встречается всегда когда остаток от деления на 10 будет меньше 5 и больше одного, и число меньше 5 либо больше 21, давайте запишем это на языке php заменив условие, if ($i%10 < 5 AND $i%10 > 1 AND ($i<5 OR $i>21 ) ) Сейчас, стало приятней. Но у нас остался еще вывод на 11...14 довайте добавим условие для них ($i>10 AND $i<15)

Ниже я привожу итоговый рабочий код

<?php

for ($i = 1; $i<102; $i++ ) { //Запускаем цикл который бежит по кол-ву яблок, и в нем выполняем проверки

if ( $i%10 >= 5 OR $i == 0 OR $i%10 == 0 OR ($i>10 AND $i<15)) {
$app = 'яблок';
}

if ($i%10 < 5 AND $i%10 > 1 AND ($i<5 OR $i>21 ) ) {
$app = 'яблока';
}

if ($i == 1 OR $i%10 == 1) {
$app = 'яблоко';
}

echo $i.$app."
"; //Выводим на экран и переводим строку, после каждого прохода цикла

}

?>

P.s Хочу заметить что данное решение далеко не самое лучшее для данной задачи, я лишь продолжил начатый вами путь. Существуют более красивые и оптимальные решения.
Успехов в освоение программирования, решайте и понимайте, только так вы станете настоящим программистом. Ниже ссылки на то с чем у вас проблемы.

http://php.net/manual/ru/control-structures.for.php
http://php.net/manual/ru/control-structures.if.php
http://php.net/manual/ru/language.variables.basics.php
http://php.net/manual/ru/function.echo.php
http://php.net/manual/ru/language.operators.logical.php
Moissey Choi
Moissey Choi
743
Лучший ответ
Юрий 111 Спасибо вам большое. Я, на самом деле, начинал с Паскаля, совсем недавно начал обучение по php, всего пару недель назад. Но обучение проходит очень быстро, из за этого в голове сейчас полная каша. Домашнее задание задают немного наперёд, поэтому знаний не всегда хватает на решение той или иной задачи. Надеюсь, что в скором времени путаница из головы исчезнет.

P.S. пока писал этот комментарий, наконец врубился в проблему с 11 и 14, до этого никак не мог разобраться. Ещё раз спасибо)
1. for должен иметь 3 аргумента, разделённых точкой с запятой.

2. Выражение после if должно быть обязательно в круглых скобках и никакой точки с запятой между ) и { быть не может.

3. Используй || вместо or - и не надо скобок вокруг ==.

4. В ($k == 0) or ($k%10 == 0) часть ($k == 0) лишняя: 0%10 и так равно 0.

5. В ($k == 1) or ($k%10 == 1) часть ($k == 1) лишняя - по той же самой причине.

6. Тег ?> в конце файла - осуждаемая практика. Лучше без него.

7. Программа неправильно работает для чисел 11 ...14 и x2 ...x4 (x >= 2).

А вообще окончания можно сделать в одну строчку:

$app = 'яблок' . ($k / 10 == 1 ? '' : ['', 'о', 'а', 'а', 'а', '', '', '', '', ''][$k % 10]);
Дима Разумов
Дима Разумов
68 454
Максим Талдыкин то есть? принято оставлять пхп-тег незакрытым?
If ($k%10 >= 5) or ($k == 0) or ($k%10 == 0);

и еще что за процент здесь? где вы такое вычитали?
Женя Макаров
Женя Макаров
23 541
Женя Макаров условие цикла в корне не верное, будь то даже вхиле
for (i !=101)
переменная пишется с $
странно, я начинал без проблем с паскаля, он не очень то и легкий по сравнению с этим
Юрий 111 остаток от деления. на каком-то сайте об этом прочитал
Дима Разумов % - это остаток от деления ВО ВСЕХ языках с Си-подобным синтаксисом. И очень странно, что Вы не знаете столь элементарные вещи.
У тебя с циклом что-то неладное, он же задается тремя параметрами. Например так for ($i = 1; $i <= 10; $i++) {
echo $i;
}