Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/55: Рейтинг темы: голосов - 55, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.01.2015
Сообщений: 4

Задача про переправу семьи через берег

24.01.2015, 17:57. Показов 10763. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
У меня есть вот такая вот задача:
PHP
На одном берегу реки семья - отец, мать, сын и дочь. Семья хочет добраться до другого берега реки. Они нашли рыбака с лодкой, который согласился одолжить им лодку. Семья должна переправиться к другому берегу реки и вернуть лодку назад рыбаку. В лодку могут поместиться один взрослый человек или двое детей.
Решите эту задачу с помощью php5, использовать ООП, каждый объект должен быть экземпляром класса. Программа должна прочитать конфигурацию из ini файла. В нём возможно изменить число взрослых и / или детей на любое другое. Программа должна записать файл журнала с результатами своей работы, где каждый может проверить, как люди пересекли реку и сколько итераций прошло.
Её решение:
Первыми переправляются дети.
Сын возвращается к маме-папе.
Папа едет на берег к дочери, потом дочь едет за братом и возвращается с ним к папе.
Сын едет к маме, отдает ей лодку, чтобы она переплыла к папе и дочери.
После того, как мама переправилась, дочь садится в лодку и едет к брату, подбирает его, и вместе они едут к родителям.
Дочь остается с родителями, а сын едет к рыбаку, отдает ему лодку.
Рыбак едет к родителям и высаживается.
Дочь садится и едет за братом, привозит его с собой обратно (наконец-то вся семья снова вместе), они отдают лодку рыбаку.
Лодка пересекла реку 13 раз.
Может кто-нибудь подсказать логику программирования этой задачи на пхп. Я новичок, сам только додумался сделать проверку на количество детей и как передать парсинг ini в класс.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?class People{
    public $numOfPeople;
    public function __construct($numOfPeople) {
        $this->numOfPeople = $numOfPeople;   
    }
    public function view() {
        $ret = array($this->numOfPeople);
        return $ret;
    }
}
$numOfPeople = parse_ini_file("php.ini");
    $test = new People($numOfPeople);
    if($numOfPeople['Children']<2){
        echo "Детей должно быть больше 2-х";
    }else{
            foreach($test->view() as $res) {
            foreach ($res as $res1 =>$value) {
                echo $res1." ".$value.'<br />';
            }
        }
    }
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2015, 17:57
Ответы с готовыми решениями:

Найти скорость и течения реки и время t, затраченное на переправу через реку
Лодка движется перпендикулярно к берегу со скоростью v = 7,2 км/ч. Течение относит ее на расстояние l = 150 м вниз по реке. Найти скорость...

Задача про лотосы: за сутки каждый лотос делится пополам. Определить сколько будет через месяц.
Решите задачи на C++(в виде кода программы) 1.В озере растут лотосы. За сутки каждый лотос делится пополам, и вместо одного лотоса...

Задача про взлом кода из книги Эрика Фримена про основы javascript в конце 5 главы.
читаю книгу Эрика Фримена про основы javascript.В конце 5 главы есть задачка про взлом кода.Никак не могу понять как ее решить.НЕ понимаю...

7
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
24.01.2015, 20:46
А на каком берегу рыбак изначально?
0
0 / 0 / 0
Регистрация: 24.01.2015
Сообщений: 4
24.01.2015, 20:54  [ТС]
BarbosLV, изначально рыбак на том же берегу, где и семья. Я в решении это указывал.
Первыми переправляются дети.
Сын возвращается к маме-папе.
Папа едет на берег к дочери, потом дочь едет за братом и возвращается с ним к папе.
Сын едет к маме, отдает ей лодку, чтобы она переплыла к папе и дочери.
После того, как мама переправилась, дочь садится в лодку и едет к брату, подбирает его, и вместе они едут к родителям.
Дочь остается с родителями, а сын едет к рыбаку, отдает ему лодку.
Рыбак едет к родителям и высаживается.
Дочь садится и едет за братом, привозит его с собой обратно (наконец-то вся семья снова вместе), они отдают лодку рыбаку.
Лодка пересекла реку 13 раз.
0
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
24.01.2015, 21:07
Цитата Сообщение от Dmelinevskyi Посмотреть сообщение
изначально рыбак на том же берегу, где и семья. Я в решении это указывал.
Это твоё решение? Или тебе задачу с решением дали?
0
0 / 0 / 0
Регистрация: 24.01.2015
Сообщений: 4
24.01.2015, 21:22  [ТС]
BarbosLV, это моё решение.
0
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
24.01.2015, 21:33
Цитата Сообщение от Dmelinevskyi Посмотреть сообщение
это моё решение.
И как думаешь правильное?
Но это так больше в шутку. Просто при конструировании алгоритма изначально надо учесть все варианты. К примеру, имеет ли право рыбак участвовать в процессе переправки.
Ну а если серьёзно. Я думаю тебе надо честно признаться преподавателю что ты не хрена не понял и попросить его объяснить ещё раз.
0
0 / 0 / 0
Регистрация: 24.01.2015
Сообщений: 4
25.01.2015, 14:47  [ТС]
BarbosLV, это правильное решение. Преподаватель будет очень сильно ругаться, когда я к нему приду, после того как закончил учёбу и буду говорить, что я не хрена не понял. К тому же преподавателей по программированию у меня не было, а преподы по математике будут в шоке от увиденного.
По сути, Вы можете чем-то помочь или будете дальше меня считать за школьника?

Добавлено через 16 часов 57 минут
Пришёл к такому алгоритму решения:
Нужно создать два класса, 1 для взрослых, другой для детей, читаем из файла сколько взрослых, даем им объект первого класса, читаем сколько детей, им объект второго класса.
Класс Взрослых:
PHP
1
2
3
4
5
6
7
8
9
class GrownUp{
        public $numOfGrownUp;
        public function __construct($nogu) {
            $this->numOfGrownUp = $nogu;   
        }
        public function view() {
            echo "<p>Количество взрослых: ".$this->numOfGrownUp."<br>";
        }
    }
Класс детей:
PHP
1
2
3
4
5
6
7
8
9
class Children{
        public $numOfChildren;
        public function __construct($noc) {
            $this->numOfChildren = $noc;   
        }
        public function view() {
            echo "<p>Количество детей: ".$this->numOfChildren."<br>";
        }
    }
Теперь, нужно объявить флаги, где пишем где находится каждый из них, а потом просто по пунктам реализовываем перемещение людей, при этом записывая их в лог файл и меняя флаги на 1, например (когда все люди будут иметь флаг 1, то задача решена)
Нужно создать функцию, ей передаем массив тех, кого перемещаем и сторону, куда перемещаем (допустим 0 - это изначальная сторона, а 1 - нужна сторона реки)
Далее в функции проходимся циклом и меняем флаги перемещенных на номер стороны реки и логируем это все дело в файл.
Пока что набросал такой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$journal = fopen('journal.txt', 'w');
    $journal = fopen('journal.txt', 'a');
    $parse = parse_ini_file("php.ini");
    $Children = $parse['Children'];
    $GrownUp = $parse['GrownUp'];
    function __autoload($name){
        include "$name.class.php";
    }
    $c = new Children($Children);
    $c->view();
    $g = new GrownUp($GrownUp);
    $g->view();
    if($c<1){
        echo "Недостаточно людей для выполнения алгоритма";
    }else{
        
    }
Подскажите, кто может, как справиться со второй частью (там где про флаги и т.д.). У меня просто недостаточно опыта, что бы это реализовать.
0
0 / 0 / 0
Регистрация: 15.06.2014
Сообщений: 2
10.08.2016, 22:17
Dmelinevskyi, Привет, у тебя получилось решить данный пример?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2016, 22:17
Помогаю со студенческими работами здесь

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...

Переправа на другой берег
Туристы(отец, мать,2 сына) должны переправиться через реку. В их распоряжении есть маленькая лодка, которая вмещает только одного взрослого...

Безопасно переправить аборигенов на другой берег
Здравствуйте! Подскажите, пожалуйста, как создать программу (или хотя бы алгоритм) для решения следующей задачи: Три миссионера и три...

Переместить миссионеров и людоедов на другой берег реки
Племя из М миссионеров и L людоедов находится по одну сторону реки, через которую необходимо переправиться. В распоряжении имеется одна...

Как переправить семью на другой берег реки?
Сама задача, нужно сделать поиск в глубину, помогите пожалуйста. Отец, два его сына и лодка находятся по одну сторону реки. Отец весит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru