• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [Zadanie domowe] Winda - PHP - brak pomysłu na rozwiązanie

VPS Starter Arubacloud
+1 głos
502 wizyt
pytanie zadane 3 października 2017 w PHP przez Krzysztof Trybuś Mądrala (5,280 p.)
zamknięte 3 października 2017 przez Krzysztof Trybuś

Cześć mam zadanie do zrobienia, ale potrzebuję pomocy...

Treść zadania:  Zaprojektuj skrypt który w zależności od obciążenia windy wyświetli stosowny komunikat:

*Jeżeli winda jest przeciążona(maksymalne obciążenie 500KG) to wyświetl komunikat:: Winda została przeciążona! Odciąż windę, by mogła ruszyć. 

*Jeżeli waga obciążenia windy jest mniejsza lub równa 500 KG to wyświetl komunikat: Trwa zamykanie drzwi... Winda rusza.

Wyświetl lączną wagę obciążenia windy po wejściu wszystkich osób. Wyświetl ile osób weszło do windy oraz która osoba weszła do windy jako pierwsza, a która weszła jako ostatnia.

Zrobiłem taki kawałek i utknąłem:

<?php

    class Osoba {
        public $waga;
        public function __construct($waga)
        {
            $this->waga = $waga;
        }

        }

        $piotr = new Osoba(70);
        $kasia = new Osoba(70);
        $wojtek = new Osoba(150);
        $agata = new Osoba(150);

        $winda = 500;

        function obliczWaga() {

           $wagaO = func_get_args();
            return array_sum();
        }


         echo "Maksymalne obciążenie windy $winda KG" . '<br/>';

         echo 'Obciążenie windy w KG: ' . 
            obliczWaga($piotr->waga, $kasia->waga, $wojtek->waga, $agata->waga);
            

W jaki sposób mogę przypisać wynik zwrócony z funkcji obliczWaga do jakiejś nowej zmiennej np. $lacznaWaga, by móc stworzyć warunek sprawdzający typu if($lacznaWaga>$winda)?

Do klasy obiektów przypisałem na razie tylko wagę, ale chcę przypisać jeszcze "id" i "name", żeby móc to wykorzystać do wyświetlenia informacji o tym kto wszedł do windy i za pomocą max i min wyświetlić informację, która osoba weszła pierwsza i ostatnia.

Nie wiem, czy obiekty to był dobry pomysł, ale nie wiem jak się zabrać za to zadanie... Ktoś może mnie jakoś nakierować? Jakiś inny pomysł? Może w C++ zadanie będzie prostsze, nie wiem... C++ daje możliwość operowania na danych wprowadzonych z klawiatury. 

komentarz zamknięcia: Uzyskano odpowiedż odnośnie poruszanego zagadnienia.

1 odpowiedź

+4 głosów
odpowiedź 3 października 2017 przez Assasz Nałogowiec (30,460 p.)
wybrane 3 października 2017 przez efiku
 
Najlepsza

Obiekty to bardzo dobry pomysł. Pozwoliłem sobie rozszerzyć Twoje rozwiązanie:


class Person
{
	private $name;
	private $weight;
	
	public function __construct(string $name, int $weight)
	{
		$this->name = $name;
		$this->weight = $weight;
	}
	
	public function getName()
	{
		return $this->name;
	}
	
	public function getWeight()
	{
		return $this->weight;
	}
}

class Elevator
{
	private const LIMIT = 500;
	private $occupiers;
	private $weight;
	
	public function __construct()
	{
		$this->occpiers = [];
	}
	
	public function enter(Person $person)
	{
		$this->occupiers[] = $person;
		$this->weight += $person->getWeight();
	}
	
	public function getWeight()
	{
		return $this->weight;
	}
	
	public function getNumberOfOccupiers()
	{
		return count($this->occupiers);
	}
	
	public function getFirstOccupier()
	{
		if($this->getNumberOfOccupiers() > 0)
		{
			return $this->occupiers[0];
		}
	}
	
	public function getLastOccupier()
	{
		if($this->getNumberOfOccupiers() > 0)
		{
			return end($this->occupiers);
		}
	}
	
	public function run()
	{
		if($this->weight <= self::LIMIT)
		{
			return true;
		}
		
		return false;
	}
}

$piotr = new Person('Piotr', 50);
$adam = new Person('Adam', 60);
$pawel = new Person('Pawel', 70);

$elevator = new Elevator();

$elevator->enter($piotr);
$elevator->enter($adam);
$elevator->enter($pawel);

if($elevator->run())
{
	echo 'Trwa zamykanie drzwi... Winda rusza.';
}
else
{
	echo 'Winda została przeciążona! Odciąż windę, by mogła ruszyć.';
}

echo 'Łączna waga windy: '.$elevator->getWeight().
	', liczba osób: '.$elevator->getNumberOfOccupiers().
	', pierwsza osoba: '.$elevator->getFirstOccupier()->getName().
	', ostatnia osoba: '.$elevator->getLastOccupier()->getName();

Przeanalizuj dokładnie ten kod, a w razie problemów pytaj. Zwróć też uwagę, że kod ten wymaga PHP 7.1 do działania.

Wybacz za gotowca, ale wciągnąłem się :)

komentarz 4 października 2017 przez Boshi VIP (100,240 p.)
Efik chyba już śpie, alee przecież możesz wrzucić tylko obiekt  typu person  :p
1
komentarz 4 października 2017 przez HaKIM Szeryf (87,590 p.)
IMO to to kto może wejść do windy powinno być zależne od tego czy coś, co chce wejść do windy, mieści się w drzwiach; nie czy jest się ludziem. No bo która winda w realu waliduje wam czy wszedł człowiek czy kangur?

Inną sprawą jest czy aby nie wystąpiło przeciążenie, ale to już mamy. ^^
komentarz 4 października 2017 przez Boshi VIP (100,240 p.)
No dobra ale winda nie wykrywa czy ktoś jest psem czy kotem a może człowiekiem, A biorąc pod uwagę, że z windy korzystają zazwyczaj ludzie, z bagażem czy nie, to dalej są to ludzie więc nie widze tam interfejsu pozwalającego oszacować typ.
komentarz 4 października 2017 przez HaKIM Szeryf (87,590 p.)

Boshi, to była odpowiedź do mojego postu? Jeśli tak to chyba nie zrozumiałeś o co mi chodzi. :p

IMO to to kto może wejść do windy powinno być zależne od tego czy coś, co chce wejść do windy, mieści się w drzwiach; nie czy jest się ludziem. 

 No bo która winda w realu waliduje wam czy wszedł człowiek czy kangur? 


 

 No dobra ale winda nie wykrywa czy ktoś jest psem czy kotem a może człowiekiem

 Mam wrażenie, że mówimy o tym samym... :-:

komentarz 4 października 2017 przez Boshi VIP (100,240 p.)
Raczej do efika ;p

Podobne pytania

+1 głos
0 odpowiedzi 492 wizyt
0 głosów
2 odpowiedzi 115 wizyt
pytanie zadane 18 marca 2020 w C i C++ przez Berniak Początkujący (260 p.)
+1 głos
1 odpowiedź 331 wizyt
pytanie zadane 4 października 2017 w PHP przez sc4rface Dyskutant (7,710 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...