2015-11-14 58 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。這就是爲什麼該條件與某些測試用例不匹配的原因。謝謝。