2016-05-26 1 views
0

この問題を(JavaScriptで最初に)解決しようとしていますが、後でCS50のCに変換する必要があります。アイデアのシナリオでは、問題は0に達するまで機能します。条件の1つが満たされず、次のif/elseステートメントにジャンプするときに問題が発生しています...しかし、なぜコンピューティングではないのか分かりません。一見条件が2番目のブロックを過ぎて実行していない場合

function greedy(){ 
 
    var change = prompt("How much do I owe you? "); 
 
    var counter = 0; 
 
    var div, rem; 
 
    var quarter = 0.25; 
 
    var dime = 0.10; 
 
    var nickel = 0.5; 
 
    var penny = 0.1; 
 
    if (change > quarter){ 
 
    div = Math.floor(change/quarter); 
 
    rem = parseFloat((change % quarter).toFixed(3)); 
 
    counter += div; 
 
     console.log(counter); 
 
     console.log(rem); 
 
    } 
 
    if (rem > dime && rem !== 0){ 
 
    div = Math.floor(rem/dime); 
 
    rem = parseFloat((rem % dime).toFixed(3)); 
 
    counter += div; 
 
    console.log(counter); 
 
    console.log(rem); 
 
    } 
 
    else if (rem > nickel && rem !== 0){ 
 
    div = Math.floor(rem/nickel); 
 
    rem = parseFloat((rem % nickel).toFixed(3)); 
 
    counter += div; 
 
    console.log(counter); 
 
    console.log(rem); 
 
    } 
 
    else if (rem > penny && rem !== 0) { 
 
    div = Math.floor(rem/penny); 
 
    rem = parseFloat((rem % penny).toFixed(3)); 
 
    counter += div; 
 
    console.log(counter); 
 
    console.log(rem); 
 
    } else { 
 
    console.log(counter); 
 
    } 
 

 
    
 
} 
 

 
greedy();

+0

デバッガを取り出してデバッグします。 – zerkms

+0

提案のzerkmsをありがとう。私はしようとしましたが、ループの外に存在するだけで、何が原因なのか分かりません。 – Lucky500

+0

これで、あなたがやっていたことがデバッグではないことがわかりました。あなたがデバッグするとき、**すべての変数**があなたが正確に期待する値を持っていることを確認してください。あなたはそれをしていない¯\\ _(ツ))/¯ – zerkms

答えて

2

、これらは間違っている:修正し

var nickel = 0.5; 
var penny = 0.1; 

var nickel = 0.05; 
var penny = 0.01; 
+0

それはまさにポールだった!私を助ける時間をとってくれてありがとう。 – Lucky500

+0

問題ありません。しばしば別の視線が必要です。 – Paul

0

あなたはとき変更if文第二の状態を確認しようとしている場合>四半期を挿入し、第2 if文を第1 ifステート内に挿入する。変更の場合< quarter第1のelse文の中に第2のif文を挿入します。

0

1)セントに変換し、整数演算を使用します。それはおそらくあなたのjavascriptでバイトされませんが、Cでそれは間違いありません。

2)ニッケルではなく0.5 0.05であり、ペニーは、もしそう0.01

3)場合であるべきです。そして、最後にelse(if!== 0)でなければなりません。

4)すべての比較は> =である必要があります。例えば。実際には(rem> = dime & & rem!== 0)でなければなりません。そうでなければ、25セントは2桁とニッケル(quaterとしてではなく)として与えられます。

関連する問題