2017-04-03 3 views
0

ちょっと私は割り当てのコードを書いていて、私は立ち往生しています。私の問題は、私は5または3で番号が[0500]の間にあることを、ある条件を満たしているアレイ内の最大有効な番号を見つけたいと割り切れるこの私がこれまで持っている:配列から最大の有効な番号を選択したい

var numlist =[]; 
var count = 0 ; 
var bignum; 


while (count >= 0) { 
    bignum = Number(prompt("Enter Number")); 

    if (bignum == 12345){ 
     break; 
    } 

    if (bignum > 500 || bignum < 0){ 
     document.write("No data to Print"); 
     continue; 
    } 

    if (!(bignum % 3 === 0 || bignum % 5 === 0)){ 
     document.write("No data to Print"); 
     continue; 
    } 

    numlist = Math.max(bignum); 
    bignum = numlist; 

    var loop; 

    for (loop = 0; loop <= 10; loop++){ 
     value = bignum * loop; 
     document.write(bignum + " X " + loop + " = " + value + "<br />"); 
    } 
} 

ここで

は割り当てとコードの例 prompt code

で誰かが私を助けてくださいことはできますか?

+0

読みください。宿題に関するこのメタ質問:https://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-a nswer-homework-questions –

+0

@MarcMarchiavelliあなたが少なくともtryied(これはあなたのケースです)のときに宿題を投稿するのは大丈夫です。 –

+0

あなたが自分で解決しようとしないなら、あなたは今まで学んでいません....彼が直面している問題は、彼が練習する必要があるものの一部です... – driconmax

答えて

0

これはこれを行う方法の1つです。私はあなたがこれを "あなたの道"とすることができるように、少なくとも私はそれを変更するためにtryied。このコードを少し勉強してください。あなたが何かを理解していなければ、自由に質問してください。ここで

var numlist = []; 
 
var bignum; 
 

 
// get the number and populate the array 
 
while (true) { // you don't need a var if you want an infinite loop 
 
    bignum = Number(prompt("Enter Number")); 
 

 
    if (bignum == 12345) { 
 
     break; 
 
    } 
 

 
    if (bignum > 500 || bignum < 0) { 
 
     continue; 
 
    } 
 

 
    if (!(bignum % 3 == 0 || bignum % 5 == 0)) { 
 
     continue; 
 
    } 
 

 
    numlist.push(bignum); // push method in an array includes a value 
 
} 
 
    
 
if (numlist.length == 0) { 
 
    document.getElementById('res').innerHTML = "No data to Print"; 
 
} else {  
 
    var max = -Infinity; 
 
    for(var ix = 0; ix<numlist.length; ix++) { 
 
    \t if (numlist[ix] > max) max = numlist[ix]; 
 
    } 
 
    
 
    var content = ''; 
 
    for (var loop = 0; loop <= 10; loop++) { 
 
     value = max * loop; 
 
     content += max + " X " + loop + " = " + value + "<br />";  
 
    } 
 
    document.getElementById('res').innerHTML = content; 
 
}
<div id="res"></div>

あなたはjavascriptのに優れているとき、あなたは勉強することのより高度なバージョンです::) @driconmax

var numlist = [], bignum; 
 
while ((bignum = Number(prompt("Enter Number"))) != 12345) 
 
    ((bignum > 0) && (bignum < 500)) && (!(bignum % 3) || !(bignum % 5)) && 
 
    \t numlist.push(bignum); 
 

 
var max = Math.max(...numlist) 
 
document.getElementById('res').innerHTML = 
 
    numlist.length && [...Array(11).keys()].reduce((p, _ign, ix)=> 
 
     p += max + " X " + ix + " = " + (max * ix) + "<br />", '') || 'No data to Print';
<div id="res"></div>

+0

ありがとうございました。これは本当に役立ちます。 –

+0

あなたにとって有益だった場合は、その答えをupvote/acceptしてください。ありがとう。 –

+1

いくつかのポインタ。コードを小さな関数に分割します。これはコードをより再利用可能にします。次に、 'Math.max.apply(numList)'を使うことができます。ループよりも高速です。第三に、これは代入であるため、OPがスプレッド演算子( '...')について知らないかもしれないと仮定することができます。第4に、第2のアプローチでは、 'array.filter'を使う方が良いです。 – Rajesh

関連する問題