Mumbai
12.04.2017 - 17:20
Здравствуйте!
Недавно начал изучать PHP и дошёл до задания: "Вычислить сумму: 2/3+3/4+4/5+,,,10/11". Вопрос: Как работать с обыкновеными дробями? С циклами всё мне всё понятно.
да так же, как везде.
$a = 5;
$b = 6;
$summa = $a/$b;
выкладывайте своё решение, подскажем что не так. Задачка то пустиковая.
2/3+3/4+4/5+5/6+6/7+7/8+8/9+9/10+10/11
Сумма:7.4801226551227
Mumbai
12.04.2017 - 17:39
Ответ должен быть обыкновенной дробью: 2/3+3/4=17/12....
Возможно, в PHP это невозможно. Легко написать код, складывающий 2 обыкновенные дроби, но когда их десятки... огогого.... да и гугл молчит как партизан про обыкновенные дроби в PHP
sergeiss
12.04.2017 - 17:44
Цитата (Mumbai @ 12.04.2017 - 17:39) |
да и гугл молчит как партизан про обыкновенные дроби в PHP |
Ну, как бы, в любом ЯП действия производятся с вещественными числами, а не с дробями. Если тебе нужно именно с дробями работать, в частности "привести к общему знаменателю" и т.д. и т.п., то пиши свой алгоритм
Такой, который не зависит от ЯП. А потом уже реализуй его хоть в ПХП, хоть в другом языке.
Цитата (Mumbai @ 12.04.2017 - 17:39) |
Легко написать код, складывающий 2 обыкновенные дроби, но когда их десятки... огогого.... |
Если ты можешь сложить 2 дроби, то в чем проблема сложить более 2-х дробей? Например, у тебя есть 3 дроби. Складываешь первые две и получаешь вместо трех всего 2 дроби
Складываешь их и получаешь одну.
ПыСы. Пишешь функцию для сложения 2-х дробей и всё, задача уже решена. Надо только еще эти дроби хранить правильно, наверное, в виде массива из 2-х элементов.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
T1grOK
12.04.2017 - 18:39
...В том же python "из каробки", есть модуль fractions для этого...
Под PHP есть готовые решения
https://github.com/phospr/fraction
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Mumbai
12.04.2017 - 18:51
T1grok, спасибо огромное!
Mumbai
12.04.2017 - 18:55
а вот моя про грамма для сложения двух обыкновенных дробей. Возможно, она вам покажется примитивом, но учтите: я прошёл только переменные и добрался до циклов только. Никаких функций и массивов я еще не изучал. И вообще это мой первый ЯП.
Итак, моя программа:
файл index.html
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Сложение двух обыкновенных дробей</title>
<meta charset="utf-8">
</head>
<body>
<h3>Программа складывает две обыкновенные дроби</h3>
<form action="test.php" method="post">
Введите числитель первой дроби: <input type="text" name="a" size="1">
Введите числитель второй дроби: <input type="text" name="c" size="1"><br>
Введите знаменатель первой дроби: <input type="text" name="b" size="1">
Введите знаменатель второй дроби: <input type="text" name="d" size="1"><br>
<input type="submit" value="Сложить">
</form>
</body>
</html>
и файл в корневом каталоге:
test.php
<?php
$a=$_POST["a"];
$b=$_POST["b"];
$c=$_POST["c"];
$d=$_POST["d"];
$chislitel=$a*$d+$b*$c;
$znamenatel=$b*$d;
echo $chislitel.' / '.$znamenatel;
?>
AllesKlar
12.04.2017 - 19:41
Народ, ну вы даете.
ТС дали специально задачу на развитие мозга, чтобы посмотреть на его алгоритмическое мышление, а вы... гитхаб, готовые библиотеки..
_____________
[продано копирайтерам]
sergeiss
12.04.2017 - 20:35
Mumbai, а если будет будет "2/3 + 5/6"? Правильный ответ 9/6, но твоя прога выдаст 27/18 - а это неправильный результат. Тут "в лоб" не надо делать, а надо учитывать общие множители в знаменателях.
Цитата (AllesKlar @ 12.04.2017 - 19:41) |
ТС дали специально задачу на развитие мозга, чтобы посмотреть на его алгоритмическое мышление, а вы... |
Во-во, "закончились программеры, остались только кодеры" (с)
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
SerginhoLD
12.04.2017 - 20:40
sergeiss
да все правильно, просто сократить надо, выкидываем целую часть, потом ищем максимальный делитель без остатка (по сути цикл от делимого до 2), и делим обе части дроби.
_____________
"internet explorer всех правильней отображает страницы" ©
Mumbai
12.04.2017 - 20:51
А вот как сокращать дроби - это ещё подумать надо. Тут учесть деление на 2, на 3, на 5.... причём чтобы деление числителя и знаменателя происходило параллельно до тех пор пока один из них не наткнулся на предел сокращения...
охохо... программа выйдет как фотошоп по тяжёлости
sergeiss
12.04.2017 - 21:34
Цитата (Mumbai @ 12.04.2017 - 20:51) |
охохо... программа выйдет как фотошоп по тяжёлости |
Не льсти себе
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
walerus
13.04.2017 - 01:09
Себя не похвалишь - никто не похвалит
AllesKlar
13.04.2017 - 01:15
Цитата (Mumbai @ 12.04.2017 - 18:51) |
А вот как сокращать дроби - это ещё подумать надо |
Наименьший общий знаменатель. Если мне не изменяет память, математика 4-ый класс.
http://www.for6cl.uznateshe.ru/obshhij-znamenatel-drobej/хоспади, как стыдно-то такие ссылки давать на форуме программистов
_____________
[продано копирайтерам]
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.