За последние 24 часа нас посетили 15553 программиста и 1617 роботов. Сейчас ищут 773 программиста ...

Факториал

Тема в разделе "PHP для новичков", создана пользователем M1lleniuM, 28 сен 2012.

  1. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Доброго времени суток. Вот решил на днях снова заняться php (пытался раньше изучать, но как то у меня не срослось, но ХОЧЕТСЯ ЖЕ). Поэтому, вспомнив старое, решил попробовать создать нечто вроде скрипта считающего факториалы. Мозгов хватило лишь на это:
    <?php
    echo '<input type="text" name=a><br>
    <input type=submit name="submit" value="Посчитать">';
    if($a<=0){
    echo "Введен неверный формат числа";}
    else{
    $b=1;
    $c=2;
    for($b,$b==$a,$b++){
    for($c,$c==$a,$c++){
    $d=$b*$c;
    }
    }
    }
    ?>

    Как вы заметили, он не дописан. Я не могу придумать, как после выполнения цикла, сложить все результаты. Сначала подумал записать данные в массив... Но идея себя по-моему не оправдала. Что посоветуете? Знаю, что все наверно убого, но все же пытаюсь понять этот язык. Выходит тяжко..
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  3. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    позвольте спросить, что это даст? Это новая переменная с тем же присвоенным аргументом?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сложит все результаты, как вы и просили
     
  5. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    спасибо большое. Надеюсь ошибок в скрипте нет. Премного вам благодарен!

    Добавлено спустя 45 минут 11 секунд:
    Еще один вопрос. Поставил скрипт. Пишет Parse error: syntax error, unexpected ')', expecting ';' in Z:\home\localhost\www\index.php on line 16.
    16 строка выглядит следующим образом
    13.}else{
    14.$b=1;
    15.$c=2;
    16.for($b,$b==$a,$b++){
    17.for($c,$c==$a,$c++){
    18.$d=$b*$c;
    подскажите, где тут может быть ошибка?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    for через точку с запятой обычно пишется, а не через запятые.
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну если конечно там нет никаких условий типо: $a==$b и $c=0 =)))
     
  8. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    И это снова я, с глупыми вопросами:) Ошибку с for исправил - скрипт запустился. Но, при вводе в поле числа, и после нажатия кнопки "посчитать" мне вместо вывода результата фактически обновляет страницу. И как всегда, я не могу понять в чем дело:)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Считаем факториалы</title>
    </head>
    <body>
    <?php
    echo '<form name="fak" method="post" action="index.php">
    <input type="text" name="a"><br>
    <br><input type="submit" name="d" value="Посчитать"><br>
    <input type="hidden" name="e">
    </form>';
    if($a<=0) {
    $b=1;
    $c=2;
    for($b;$b==$a;$b++) {
    for($c;$c==$a;$c++) {
    $d=$b*$c;
    $d+=$b*$c;
    }
    }
    } else {
    echo "Введен неверный формат числа";
    }
    echo "$d";
    ?>
    </body>
    </html>
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  10. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Пока не очень понимаю суть... Попробую разобраться.. Не могли бы вы как-то по конкретней направить? Для понимания. Видел не раз нечто подобное как $_POST[''], но тогда, то бишь раньше, я не понимал что это. Да и сейчас плохо.

    Да, и позвольте задать вопрос.. Собираюсь покупать книжку по php, чтобы хоть как-то ориентироваться. Раньше была одна Афонина С.М. PHP для начинающих, из нее, собственно, и получил знания написанные в скрипте выше. Сейчас думаю купить PHP5 в подлиннике. Прочитал у вас в теме про нее, но вот вопрос, какой год издания брать. Есть 2006 и 2008. Нужно определиться. Просто очень хочется научится данному языку программирования. В свое время не получилось, теперь это можно сказать "дело чести". Да и к тому же специальность будущую выбрал такую, что связан с программированием. Нужно же открывать для себя что-то новое:)
     
  11. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    кое-как допер, что переменной присвоить POST. Но теперь похоже последняя проблема. При вводе данных, скрипт выполняется, условие выполняется, но при подсчете, вместо результата выдает 0+. Что делать?)
    Код (Text):
    1. echo '<form name="fak" method="post" action="index.php">
    2. <input type="text" name="a"><br>
    3. <br><input type="submit" name="d" value="Посчитать"><br>
    4. <input type="hidden" name="e">
    5. </form>';
    6. $a=$_POST['a'];
    7. $d=$_POST['d'];
    8. if($a>=0) {
    9. $b=1;
    10. $c=2;
    11. for($b;$b==$a;$b++) {
    12. for($c;$c==$a;$c++) {
    13. $d+=$b*$c;
    14. }
    15. }
    16. } else {
    17. echo "Введен неверный формат числа";
    18. return false;
    19. }
    20. $d+=$_POST['d+'];
    21. echo '<br>';
    22. echo "$d+";
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $d+=$_POST['d+']; это что за строка? =)

    <input type="submit" name="d" value="Посчитать">
    $d=$_POST['d'];
    Это зачем?

    return false;
    кому ретурн? куда? =)

    Добавлено спустя 8 минут 8 секунд:
    вот ваш код, в рабочем виде. Нужно в цикле for указывать условие, при котором он будет выполняться, а не прерываться.

    Код (PHP):
    1. echo '<form name="fak" method="post" action="/test">
    2. <input type="text" name="a"><br>
    3. <br><input type="submit" name="d" value="Посчитать"><br>
    4. <input type="hidden" name="e">
    5. </form>';
    6. $a = $_POST['a'];
    7. $d = 0;
    8. if ($a >= 0) {
    9.   echo "Считаем $a...<br>";
    10.   for ($b=1; $b <= $a; $b++) {
    11.     echo"for1";
    12.     for ($c = 2; $c <= $a; $c++) {
    13.       echo "for2";
    14.       $d += $b * $c;
    15.       echo "$d<br>";
    16.     }
    17.   }
    18. } else {
    19.   echo "Введен неверный формат числа";
    20. }
    21. echo "<br>Результат: $d"; 
     
  13. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Большое спасибо! Буду анализировать и исправлять ошибки. И ещё.. Зочем echo for1 В скрипте он у меня выводит не то что нужно.. Да и кстати:) у меня ошибка в формуле:) Судя по подсчетам). Ушел исправлять. Если что, буду задавать вопросф здесь:) ещё раз спасибо!

    Добавлено спустя 8 минут 22 секунды:
    И еще вопрос, сам синтаксис написания не является "говнокодом"?:) Если да, то скажите, что следует исправить. Если конечно не затруднит. Я исправлюсь:) Все ошибки проанализирую обязательно!:)
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    осталость от дебага.

    всё ок.
    цикл должен быть один просто
    Код (PHP):
    1. <?php
    2. echo '<form name="fak" method="post" action="/test">
    3. <input type="text" name="a"><br>
    4. <br><input type="submit" name="d" value="Посчитать"><br>
    5. <input type="hidden" name="e">
    6. </form>';
    7. $a = $_POST['a'];
    8. $d = 1;
    9. if ($a >= 0) {
    10.   echo "Считаем $a...<br>=1";
    11.   for ($i = 1; $i <= $a; $i++) {
    12.     echo "*$i";
    13.     $d *=$i;
    14.   }
    15. } else {
    16.   echo "Введен неверный формат числа";
    17. }
    18. echo "<br>Результат: $d"; 
     
  15. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Хм:) Буду думать и исправлять:) Спасибо огромное:)

    Не заметил приложенный код:) Проверил. Все ок:) Много ошибок у меня. Надо изучать глубже и работать над правильностью:)
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да нормально всё для первого раза =)
     
  17. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    и такой вопрос:) Надоел уже поди:) Но все же. Стоит знак более, либо равно нулю. При вводе нуля скрипт не выводит ошибки. Просто показывает результат равный 0. Это я что-то не знаю, или эта конструкция так работает? Да и кстати. Ошибкой в моей формуле оказалось то, зачем я сюда пришел:) Там же результат не складывать нужно было. А умножать!!!:) Дурак я:)

    Добавлено спустя 3 минуты 7 секунд:
    Ну это не совсем первый раз:) Но чисто теоретически да:) Я же раньше, где-то года 3 назад решил изучать. Но не получилось. Не понимал я тогда функции различных конструкций языка. В итоге забросил. Щас учусь на специальности, где идет программирование(правда выходная специальность не программист(об этом я узнал только сейчас :D)) и случайно наткнулся на старую книжку:) Решил попробовать. Ну вот что и получилось.

    Добавлено спустя 2 минуты 26 секунд:
    Ну это не совсем первый раз:) Но чисто теоретически да:) Я же раньше, где-то года 3 назад решил изучать. Но не получилось. Не понимал я тогда функции различных конструкций языка. В итоге забросил. Щас учусь на специальности, где идет программирование(правда выходная специальность не программист(об этом я узнал только сейчас :D)) и случайно наткнулся на старую книжку:) Решил попробовать. Ну вот что и получилось.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну так ноль ведь равен нулю, потому и не выводит =)
     
  19. M1lleniuM

    M1lleniuM Активный пользователь

    С нами с:
    28 сен 2012
    Сообщения:
    34
    Симпатии:
    0
    Ох да:) ну логично же ну:) Дурак я точно:) Если бы мой преподаватель по ВышМату это увидел, готовил бы петлю:))