[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обыкновенные дроби
Mumbai
Здравствуйте!
Недавно начал изучать PHP и дошёл до задания: "Вычислить сумму: 2/3+3/4+4/5+,,,10/11". Вопрос: Как работать с обыкновеными дробями? С циклами всё мне всё понятно.
Kusss
да так же, как везде.
$a = 5;
$b = 6;
$summa = $a/$b;
Kusss
выкладывайте своё решение, подскажем что не так. Задачка то пустиковая.
2/3+3/4+4/5+5/6+6/7+7/8+8/9+9/10+10/11
Сумма:7.4801226551227
Mumbai
Ответ должен быть обыкновенной дробью: 2/3+3/4=17/12....
Возможно, в PHP это невозможно. Легко написать код, складывающий 2 обыкновенные дроби, но когда их десятки... огогого.... да и гугл молчит как партизан про обыкновенные дроби в PHP
sergeiss
Цитата (Mumbai @ 12.04.2017 - 17:39)
да и гугл молчит как партизан про обыкновенные дроби в PHP

Ну, как бы, в любом ЯП действия производятся с вещественными числами, а не с дробями. Если тебе нужно именно с дробями работать, в частности "привести к общему знаменателю" и т.д. и т.п., то пиши свой алгоритм smile.gif Такой, который не зависит от ЯП. А потом уже реализуй его хоть в ПХП, хоть в другом языке.

Цитата (Mumbai @ 12.04.2017 - 17:39)
Легко написать код, складывающий 2 обыкновенные дроби, но когда их десятки... огогого....

Если ты можешь сложить 2 дроби, то в чем проблема сложить более 2-х дробей? Например, у тебя есть 3 дроби. Складываешь первые две и получаешь вместо трех всего 2 дроби smile.gif Складываешь их и получаешь одну.

ПыСы. Пишешь функцию для сложения 2-х дробей и всё, задача уже решена. Надо только еще эти дроби хранить правильно, наверное, в виде массива из 2-х элементов.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
T1grOK
...В том же 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
T1grok, спасибо огромное! user posted image
Mumbai
а вот моя про грамма для сложения двух обыкновенных дробей. Возможно, она вам покажется примитивом, но учтите: я прошёл только переменные и добрался до циклов только. Никаких функций и массивов я еще не изучал. И вообще это мой первый ЯП.
Итак, моя программа:
файл 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
Народ, ну вы даете.
ТС дали специально задачу на развитие мозга, чтобы посмотреть на его алгоритмическое мышление, а вы... гитхаб, готовые библиотеки..


_____________
[продано копирайтерам]
sergeiss
Mumbai, а если будет будет "2/3 + 5/6"? Правильный ответ 9/6, но твоя прога выдаст 27/18 - а это неправильный результат. Тут "в лоб" не надо делать, а надо учитывать общие множители в знаменателях.

Цитата (AllesKlar @ 12.04.2017 - 19:41)
ТС дали специально задачу на развитие мозга, чтобы посмотреть на его алгоритмическое мышление, а вы...

Во-во, "закончились программеры, остались только кодеры" (с) smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SerginhoLD
sergeiss
да все правильно, просто сократить надо, выкидываем целую часть, потом ищем максимальный делитель без остатка (по сути цикл от делимого до 2), и делим обе части дроби.

_____________
"internet explorer всех правильней отображает страницы" ©
Mumbai
А вот как сокращать дроби - это ещё подумать надо. Тут учесть деление на 2, на 3, на 5.... причём чтобы деление числителя и знаменателя происходило параллельно до тех пор пока один из них не наткнулся на предел сокращения...
охохо... программа выйдет как фотошоп по тяжёлости
sergeiss
Цитата (Mumbai @ 12.04.2017 - 20:51)
охохо... программа выйдет как фотошоп по тяжёлости

Не льсти себе rolleyes.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
walerus
Цитата
Не льсти себе

Себя не похвалишь - никто не похвалит cool.gif
AllesKlar
Цитата (Mumbai @ 12.04.2017 - 18:51)
А вот как сокращать дроби - это ещё подумать надо

Наименьший общий знаменатель. Если мне не изменяет память, математика 4-ый класс.

http://www.for6cl.uznateshe.ru/obshhij-znamenatel-drobej/

Свернутый текст
хоспади, как стыдно-то такие ссылки давать на форуме программистов blink.gif


_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.