Loading...
polikkrasteva avatar polikkrasteva 7 Точки

Шивашки Цех PHP

Здравейте

имам проблем със задача 6 Шивашки цех! Получавам различен изход от този който е даден.

 

Please, help!

 

<?php
 
$numberTables = intval (readline());
$lenghtTablesmetres = floatval (readline());
$widthTablesmetres = floatval(readline());
 
$areaCover = ($numberTables * ($lenghtTablesmetres + 2 * 0.30))*
        ($widthTablesmetres + 2 * 0.30);
$areaKarre = ($numberTables* ($lenghtTablesmetres / 2))*
        ($widthTablesmetres / 2);
$priceOrdersUSD = ($areaCover * 7) + ($areaKarre * 9);
$priceOrdersUSD = round ($priceOrdersUSD, 2);

                 //$priceOrdersUSD = number_format($priceOrdersUSD,2,".","");
$priceOrdersBGN = ($priceOrdersUSD * 1.85);
                 //$priceOrdersBGN = number_format($priceOrdersBGN,2,".","");
$priceOrdersBGN = round ($priceOrdersBGN,2);

       echo "$priceOrdersUSD USD".PHP_EOL;
          echo "$priceOrdersBGN BGN".PHP_EOL;

Тагове:
0
Programming Basics
wileEcoyote avatar wileEcoyote 23 Точки

Здравей,

аз съм написал програмата на други езици c#  и java за това моля не бе убивай ако греша :) , не намирам грашка в изчисления и но не съм сигурен как точно работи round метода. Ако загръглява стойността, може от там да ти е грешката. На джава се иска просто да предадем сумата до втория знак след запетая без закръгляване.

 

double cover=number*(lenght+2*0.3)*(width+2*0.3);
        double square=number*(lenght/2)*(lenght/2);

        double coverPrise=cover*7;
        double squarePrise=square*9;
        double priseUSD=(coverPrise+squarePrise);
        double priseBGN=(coverPrise+squarePrise)*1.85;

 

това са ми сметките на съответния език и не намирам разлика с твойте.

Надявам се да съм помогнал все пак

0
16/11/2018 17:49:34
The_assassin avatar The_assassin 158 Точки

Здравей!

Изглежда има някаква специфика при математическите операции в РНР. Работата се „забатачва“ още на първото пресмятане (areaCover в твоя случай), където вместо стойност 8.8, се получава 4.8. Преправих моя код за РНР, и ситуацията е абсолютно същата. Опитай да разбереш защо се получава така, и ако не успееш, задължително помоли лектора да ти обясни каква може да бъде причината за подобен резултат.

Реф.

0
17/11/2018 08:38:37
LoraMS avatar LoraMS 18 Точки

Здравей! Грешката ти е при изчисляването на $areaKarre. При второто делене на 2 трябва пак да използваш $lenghtTablesmetres и се получава правилния изход.

2
polikkrasteva avatar polikkrasteva 7 Точки

Благодаря! Поправих го и сега ми дава 75 точки хмм

<?php

$numberTables = intval (readline());
$lenghtTablesmetres = floatval (readline());
$widthTablesmetres = floatval(readline());
 
$areaCover = $numberTables * ($lenghtTablesmetres + 2 * 0.30) *
        ($widthTablesmetres + 2 * 0.30);
$areaKarre =  $numberTables * ($lenghtTablesmetres / 2)*
        ($lenghtTablesmetres / 2);
$priceOrdersUSD = ($areaCover * 7) + ($areaKarre * 9);
$priceOrdersUSD = number_format($priceOrdersUSD,2,".","");

$priceOrdersBGN = ($priceOrdersUSD * 1.85);
$priceOrdersBGN = number_format($priceOrdersBGN,2,".","");

       echo "$priceOrdersUSD USD".PHP_EOL;
       echo "$priceOrdersBGN BGN".PHP_EOL;

0
The_assassin avatar The_assassin 158 Точки

Да, това е абсолютно вярно, че там трябва да бъде една и съща променлива. Странното е, че понеже на мене не ми се инсталираше РНР само заради тази задачка, и го пробвам ето тук, където продължава да дава неверни резултати. Явно сайтът нещо не е наред...

0
LoraMS avatar LoraMS 18 Точки

Форматирането на $priceOrdersUSD го премести два реда по надолу - след като извършиш изчисленията с тази променлива. Тук е поправения код https://pastebin.com/TQX6XjBs със 100/100.

1
17/11/2018 15:13:38
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.