2015-11-14 57 views
0

所以,这里是我试图解决这个问题(https://www.hackerrank.com/challenges/library-fine)。为了解决这个问题,我创建了一个简单的函数calculateFine并设置条件来计算罚款。那么问题是什么?那么,当我在我的机器上运行代码时,一切似乎都很好,但hackerrank不会接受代码。我是PHP新手,功能概念对我来说有点令人困惑,但我试过。以下是我的代码:计算图书馆精细(PHP)

<?php 
$_fp = fopen("php://stdin", "r"); 
/* Enter your code here. Read input from STDIN. Print output to STDOUT */ 

$_a = explode(" ",fgets($_fp)); 
$_b = explode(" ",fgets($_fp)); 

// Initialising variable 
$_fine = ""; 

// Calling Function 
calculateFine($_a,$_b); 

// Defining Function 
function calculateFine($actualDate, $returnDate) 
    { 

     // Checking various conditions 

     if ($actualDate[0] <= $returnDate[0] && $actualDate[1] == $returnDate[1] && $actualDate[2] == $returnDate[2]) 
      { 
       $_fine = 0; 
       echo $_fine; 
      } 
     elseif($actualDate[0] > $returnDate[0] && $actualDate[1] == $returnDate[1] && $actualDate[2] == $returnDate[2]) 
      { 
       $_late = $actualDate[0] - $returnDate[0]; 
       $_fine = 15*$_late; 
       echo $_fine; 
      } 
     elseif($actualDate[1] > $returnDate[1] && $actualDate[2] == $returnDate[2]) 
      { 
       $_late = $actualDate[1] - $returnDate[1]; 
       $_fine = 500*$_late; 
       echo $_fine; 
      } 
     elseif($actualDate[2] > $returnDate[2])  
      { 
       $_fine = 10000; 
       echo $_fine; 
      } 
     else 
      { 
       $_fine = 0; 
       echo $fine; // Updated (This is the undefined variable causing error) 
      } 
    } 
?> 
+1

当创建一个像这样的函数时,函数返回值通常会更好。所以在你的第一个'if'语句中,你可以简单地把'return 0',等等其他条件。然后你可以像你这样回显你的函数的输出:'echo calculateFine($ _ a,$ _ b);'。这也导致不必初始化$ _fine变量。 –

+0

@Thijis试过这个,但编译器(在HackerRank)显示错误的答案。 – Vivek

回答

1

看起来在$actualDate[2]有一个换行符。所以,如果你修剪它,你会得到正确的答案:

trim($actualDate[2]) 

但将是更好的在这里已经修剪:

$_a = explode(" ",trim(fgets($_fp))); 
$_b = explode(" ",trim(fgets($_fp))); 
+0

嗨,这有助于传递大多数测试用例,但有些情况下没有通过,比如它们是'$ _a = 28 2 2015'和'$ _b = 15 4 2015',应该输出0。我的机器上输出0,但不是HR) – Vivek

+0

Thankyou。这是一个语法错误。 (最后一行未定义变量'$ fine') – Vivek

0

我得到了它,遗憾的疏忽。最后的回声是$fine而不是$_fine。这就是为什么该条件与某些测试用例不匹配的原因。谢谢。