Помощник
|
РЕШЕНИЯ задач на PHP для начинающих, решение задач |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
matroskin8 |
14.1.2011, 14:53;
Ответить: matroskin8
Сообщение
#2
|
|
Решил поддержать тему
Ну, и решил первую задачу Итак, Задача №1(математическая) Рассчитать скорость движения машины и вывести её в удобочитаемом виде. Осуществить возможность вывода в км/ч, м/c. Исходные данные: Пройденный путь - S; Время движения - t. Представить решение задачи с помощью одной функции. Решение задачи: 1) сама функция будет такой: [php]function speed($s, $t, $val){ $speed[1] = $s / $t . " км/ч"; $speed[2] = $speed[1] / 3.6 . " м/с"; return $speed[$val]; }[/php] Функция имеет 3 аргумента - пройденный путь, время движения и 3-ий аргумент отвечает за пользовательский вариант вывода расчета (км/ч или м/c). В массив $speed попадает 2 варианта расчета, а возвращает ф-ция 1 вариант в зависимости от того, что выбрал пользователь. 2) осуществляем минимальную проверку полученных данных: [php]if(!empty($_POST['submit'])){ if($_POST['S'] <= 0 || $_POST['t'] <= 0){ $_SESSION['error'] = '<strong><em>Число должно быть больше нуля</em></strong>'; header("Location: index.php"); exit(); }else{ $_SESSION['res'] = "<strong><em>" .speed($_POST['S'], $_POST['t'], $_POST['val']). "</em></strong>"; header("Location: index.php"); exit(); } }[/php] Если попало что-то кроме числа с плюсом (1, 2, 50.5 и т.д.) или ноль, то нам это не подходит и в сессионную переменную error мы заносим соответствующее сообщение. Если число нас устраивает, то в $_SESSION['res'] заносим результат работы ф-ции. 3) выводим результат и уничтожаем сессию: [php]<?php echo $_SESSION['error']; echo $_SESSION['res']; session_unset(); session_destroy(); ?>[/php] 4) ну и код самой формы: <form method="post" action=""> <table> <tr> <td>Пройденный путь (км):</td> <td><input type="text" name="S" /></td> </tr> <tr> <td>Время движения (ч):</td> <td><input type="text" name="t" /></td> </tr> <tr> <td><input type="radio" name="val" value="1" checked="checked" /> км/ч</td> <td><input type="radio" name="val" value="2" /> м/с</td> </tr> <tr> <td colspan="2"><input type="submit" name="submit" value="Рассчитать" /></td> </tr> </table> </form> Вот полный код скрипта: [php]<?php session_start(); function speed($s, $t, $val){ $speed[1] = $s / $t . " км/ч"; $speed[2] = $speed[1] / 3.6 . " м/с"; return $speed[$val]; } if(!empty($_POST['submit'])){ if($_POST['S'] <= 0 || $_POST['t'] <= 0){ $_SESSION['error'] = '<strong><em>Число должно быть больше нуля</em></strong>'; header("Location: index.php"); exit(); }else{ $_SESSION['res'] = "<strong><em>" .speed($_POST['S'], $_POST['t'], $_POST['val']). "</em></strong>"; header("Location: index.php"); exit(); } } ?> <h3><ins>Рассчет скорости</ins></h3> <?php echo $_SESSION['error']; echo $_SESSION['res']; session_unset(); session_destroy(); ?> <form method="post" action=""> <table> <tr> <td>Пройденный путь (км):</td> <td><input type="text" name="S" /></td> </tr> <tr> <td>Время движения (ч):</td> <td><input type="text" name="t" /></td> </tr> <tr> <td><input type="radio" name="val" value="1" checked="checked" /> км/ч</td> <td><input type="radio" name="val" value="2" /> м/с</td> </tr> <tr> <td colspan="2"><input type="submit" name="submit" value="Рассчитать" /></td> </tr> </table> </form>[/php] |
|
|
Гость_0_* Гость_0_* |
14.1.2011, 18:25;
Ответить: Гость_0_*
Сообщение
#3
|
|
matroskin8 и Banderas, я не уверен, что нужны решения. Обычно толку от них мало, так как люди быстро сдаются и подглядывают в решения, когда лучше дольше подумать и решить самостоятельно.
|
|
|
matroskin8 |
14.1.2011, 18:41;
Ответить: matroskin8
Сообщение
#4
|
|
matroskin8 и Banderas, я не уверен, что нужны решения. Обычно толку от них мало, так как люди быстро сдаются и подглядывают в решения, когда лучше дольше подумать и решить самостоятельно. Ну это как посмотреть По себе знаю, что если мне интересно решить какую-то задачу (именно для себя, чтобы чему-то научиться), то в решения я полезу только тогда, когда промучаюсь довольно долго и дойти до решения самостоятельно у меня просто не получится... вот тогда для меня решение будет совсем не лишним. |
|
|
sc2r2bey |
14.1.2011, 18:52;
Ответить: sc2r2bey
Сообщение
#5
|
|
Решения интересны в тех случаях, когда обсуждаются они
-------------------- программирую web и для we |
|
|
matroskin8 |
14.1.2011, 19:00;
Ответить: matroskin8
Сообщение
#6
|
|
Решения интересны в тех случаях, когда обсуждаются они Согласен поэтому Banderas и писал: (Banderas) Конечно же в теме могут быть обсуждения, поправки, дискуссии и так далее. Кроме того, вполне возможно, что кто-то решает задачи темы и, решив какую-либо задачу, захочет сравнить свое решение с решением из этой темы... вполне возможно, что он увидит решение задачи другим способом и почерпнет для себя, соответственно, что-то новое... а может быть и так, что его решение окажется более элегантным, и он представит свое решение, чтобы уже другие могли чему-то поучиться у него. |
|
|
sc2r2bey |
14.1.2011, 19:22;
Ответить: sc2r2bey
Сообщение
#7
|
|
ну да, единственное у нас тут вяленько и не получиться как хочется
-------------------- программирую web и для we |
|
|
Banderas
|
Сообщение
#8
|
|
admin, я в школе по решениям из ГДЗ изучал тему, если что-то не понимал)). На примерах так-же модно научиться.
matroskin8, спасибо за поддержку surfer, ничего... я буду решать нерационально, а деды будут меня выправлять Задача №6(работа с файлами и формой) Есть форма с одним полем и кнопкой отправки. Поле, в которое вводится ссылка заполняется пользователем и отсылается на обработку. Файл-обработчик получает ссылку, проверяет нет ли ещё такой в базе(файле) и заносит её в конец файла. Формы: <html> <head> <title>Страничка с формой</title> </head> <body> <form action='zad6_h.php' method='post'> <input type='text' name='text' size='50' /> <br><input type='submit' name='ok' /> <input type='reset' value='Сбросить' /> </form> </body> </html> Обработчик: [php]<?php !isset($_POST['ok']) ? exit : ''; // если не нажали кнопку "отправить", то не обрабатываем запрос $url = $_POST['text']; if (empty($url)) exit; // если не ввели ссылку - выходим из обработчика $D_ROOT = $_SERVER['DOCUMENT_ROOT']; $url .= "\r\n"; // добавляем символы переноса строки $file = "$D_ROOT/../www/files/zad6.txt"; $fp = fopen($file, 'a+b'); // открываем zad6.txt для записи/создания/чтения в бинарном режиме ((filesize($file) == 0) ? fwrite($fp, $url) : ''); // если файл пуст - просто записываем ссылку $fl = file($file); // создаем массив из всех строк, что в файле zad6.php foreach ($fl as $isurl) { strcasecmp($url, $isurl) == 0 ? $flag=true : ''; // если такая ссылка уже есть в файле, ставим указатель } !$flag ? fwrite($fp, $url) : ''; // если ссылки нет (выходя из логики выше), записываем ссылку в конце файла fclose($fp); readfile($file); // считываем файл для удобства ?>[/php] Обработчик написан не рационально, но работает. У кого какие варианты ещё будут? |
|
|
Banderas
|
Сообщение
#9
|
|
Задача №5(работа с файлами)
Написать счетчик открытия для одной страницы. Количество открытий страницы хранится в txt-файле в виде числа. [число открытия страницы] После каждого 10 открытия страницы, выводить приветственное сообщение на экран. Для удобства записывал просто цифру в таком виде 15, а не в таком [15]. Но скобки не проблема, легко убираются функцией intval() [php]<?php $D_ROOT = $_SERVER['DOCUMENT_ROOT']; @ $count = file_get_contents("$D_ROOT/../www/files/zad5.txt"); // содержимаое файла, @ - не показывает ошибку $count ? $count++ : $count=1; // если файл открылся - увеличим значение на 1. Если нет - счетчик равен 1 file_put_contents("$D_ROOT/../www/files/zad5.txt", $count); // перезаписать содержимое файла ($count % 10 == 0) and ($count != 0) ? print ('Ура! Вы котрыли эту страницу уже ' // выводим сообщение .$count.' раз, не надоело тут шастаться?') : ''; ?>[/php] |
|
|
Banderas
|
Сообщение
#10
|
|
Задача №13 ("Перевертыш", работа со строками)
Вводиться слово, выводиться его перевертыш. Например: "перевертыш" => "шытревереп". Решение задачи: [php]<?php isset($_POST['ok']) ? '' : exit; // если нажали кнопочку ... $re = $_POST['re']; if (!empty($re)) // если ввели строку (заполнили форму) { for ($i=strlen($re);$i>=0;$i--) { // перебираем символы строки справа на лево $good[] = $re[$i]; // и заноси их в массив } foreach ($good as $value) echo $value; // шытревереп шан мидовыВ } ?>[/php] |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Адалт тубы на DLE для сетки сайтов - PBN Создание качественных порно сайтов и проектов |
11 | MainTube | 3088 | Сегодня, 17:47 автор: MainTube |
|
Современный сервис для быстрого и безопасного обмена валют. | 44 | CryptoTims | 15135 | Вчера, 21:14 автор: CryptoTims |
|
Изменения условий выплат для вебмастеров в партнерской сети | 0 | leadmagnet | 598 | 20.1.2025, 20:25 автор: leadmagnet |
|
PRO дизайн: для маркетплейсов и соц. сетей, разработка сайтов, логотипов и иллюстраций! | 29 | OlgaMcField | 11639 | 20.1.2025, 14:30 автор: OlgaMcField |
|
Rebex.io – Ваша инновационная платформа для обмена криптовалюты! | 44 | Rebex | 11785 | 17.1.2025, 21:43 автор: Rebex |
Текстовая версия | Сейчас: 22.1.2025, 18:24 |