dj.drezyna Posted December 8, 2013 Report Share Posted December 8, 2013 Mam oto taki kod: class Filary { private $wys; private $dl; private $coile; public function __construct($wys,$dl,$coile) {//Pobiera wysokość, długość i odległość między filarami w mm $this->wys = (int)$wys; $this->dl = (int)$dl; $this->coile = (int)$coile; } private function wezIle() {//Oblicza ile filarów $wynik = floor($this->dl/$this->coile); if ($this->dl%$this->coile != 0) { $wynik++; } return $wynik; } private function wezStNachylenia() {//Oblicza stopień nachylenia korzystając że 1 to 45st. return ($this->wys/$this->dl)*45; } public function wezWys($filar) {//Oblicza wysokość z zależności że tg(a) = L/odległość od początku drogi z filarami return round(tan(deg2rad($this->wezStNachylenia()))*($this->coile*$filar),2); } public function wezSlupy($szer,$warstw) {//Zwraca tabelę z powierzchnią słupa filarowego, jego wysokością oraz szerokością i liczbą wartstw (do obliczenia całkowitej powierzchni materiału pod filar) $tab = array(); for ($i=1;$i<=$this->wezIle();$i++) { $wys = $this->wezWys($i); $tab[$i] = array('S'=>$wys*$szer,'wys'=>$wys,'szer'=>$szer,'ile'=>$warstw); } return $tab; } } $f = new Filary(65,1700,100); print_r($f->wezSlupy(18,5)); echo $f->wezWys(18); No i gdzieś tu jest błąd, bo filar 18 ma wysokość 51.07 a nie zbliża się do wartości 65mm i co tu jest źle, bardzo byłbym wdzięczny za wskazówki, pozdrawiam, Marek P.S. A i nie pytajcie po co to jest. Mogę zapewnić, że nie jest to ze szkoły czy studiów ale zamiast liczyć na kalkulatorze postanowiłem by policzyło php napisałem i po chwili okazało się, że nie działa bo przecież ostatni filar powinien mieć wysokość równą podanej także jeszcze raz dzięki za info gdzież to ja źle zrobiłem. Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link to comment Share on other sites More sharing options...
xevil21 Posted December 8, 2013 Report Share Posted December 8, 2013 Nie wnikam w kod, ale widze, że zmienne rzutujesz na typ int a później wykonujesz operacje dzielenia i mnożenia. Poczytaj o tym, jaki to może mieć wpływ na końcowy wynik. Mówię to z doświadczenia w innych językach, może w php nie ma z tym problemu. Pozdrawiam Link to comment Share on other sites More sharing options...
dj.drezyna Posted December 9, 2013 Author Report Share Posted December 9, 2013 Dzięki z odp. Otóż rzutowanie na int dodałem w ostatniej chwili ale chyba nie powinno to mieć znaczenia, bo przecież podaję wymiary w mm, bez dziesiętnych. Co do mnożenia i dzielenia to nie wiem o co chodzi. Bo jak się mnoży 2*4/3 to kompilator chyba pomyśli, żeby jak to jest return zwrócić floata no nie? Mylę się? No to jak to zrobić poprawnie. Zauważyć trzeba, że przecież round() robię dopiero na końcu. Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link to comment Share on other sites More sharing options...
Booleeks Posted November 23, 2015 Report Share Posted November 23, 2015 return $tab; myślę ze w tej kolumnie jest jakiś bład weź to sprawdź bo mi się wydaje że dlatego się nie kompiluje Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.