2016-06-16 16 views
1

出力:L1 = 2 3 4 5 6 7 8 9:キューリストの出力は次のように出ていないことべき私はこのようなルックスを取得しなければならない

反復0 10の入力と

10、Q1 =、

反復1:L1 = 3 5 7 9、Q1 = 2

反復2:L1 = 5~7、Q1 = 2 3

反復3:L1 = 7、Q1 = 2 3 5

反復4、L1 = 2,3,4,5,6,7,8:

反復0:L1 =、Q = 2 3 5 7

をしかし、私はこの出力を得続けます9,10、Q1 =

反復4:L1 = Q1 = 2,3,5,7-、

反復1-3出力しません...

function Queue() { 
 

 
var items = []; 
 
var front=0; 
 
var rear=0; 
 
var size=20; 
 

 
this.insert = function(element){ 
 
if(rear==size) 
 
alert("Queue is full!"); 
 
else 
 
{ 
 
items[rear]=element; 
 
rear++; 
 
} 
 
}; 
 

 
this.delete = function(){ 
 
var deletedElement; 
 
if(front==rear) 
 
alert("Queue is empty!"); 
 
else 
 
{ 
 
deletedElement=items[front]; 
 
front++; 
 
} 
 

 
return deletedElement; 
 
}; 
 

 
this.deleteByElement = function(element) { 
 
var index = items.indexOf(element); 
 
if (index > -1) { 
 
    items.splice(index, 1); 
 
rear--; 
 
}else { 
 
alert("element not found "); 
 
} 
 
} 
 

 
this.deleteByFactor = function(element) { 
 
var isdeleted=false; 
 
for(var i=front;i<rear;i++) 
 
{ 
 
if(items[i]%element==0) 
 
{ 
 
this.deleteByElement(items[i]); 
 
     isdeleted=true; 
 
} 
 
} 
 
     return isdeleted; 
 
} 
 

 
this.isEmpty = function(){ 
 
return rear == 0; 
 
}; 
 

 
this.size = function(){ 
 
return items.length; 
 
}; 
 

 
this.clear = function(){ 
 
items = []; 
 
}; 
 

 
this.print = function(){ 
 
var queue=''; 
 
for(var i=front;i<rear;i++) 
 
{ 
 
queue = queue + items[i]+","; 
 
} 
 
return queue; 
 
}; 
 
} 
 

 
function createNewQueue(queue) 
 
{ 
 
var newqueue = new Queue(); 
 
var iter=0; 
 
var start=2; 
 
    
 
//Initial iteration 
 
document.getElementById("output1").innerHTML = "Iteration "+ iter + ": L1 = " + queue.print() + " Q1 =" + newqueue.print(); 
 

 
while(!queue.isEmpty()) 
 
{ 
 
if(queue.deleteByFactor(start)) 
 
{ 
 
iter++; 
 
newqueue.insert(start); 
 

 
document.getElementById("output2").innerHTML = "Iteration " + iter + ": L1 = " + queue.print() + " Q1 =" + newqueue.print(); 
 
    
 
} 
 
start++; 
 
    
 
} 
 
    
 
} 
 
var element = prompt("Enter Queue Element", ""); 
 
var queue = new Queue(); 
 
for(var i=2;i<=element;i++) 
 
queue.insert(i); 
 
//calling create new queue method 
 
createNewQueue(queue);
<p>Queue Program</p> 
 

 
<p id="output1"></p> 
 
<p id="output2"></p>
012あなたは非常に近いです

+0

あなたは毎回 'iter'をインクリメントしていないように見え、'#output2'の内容を上書きしています –

答えて

1

は、ちょうどカップルの事がありますように見えます。

まず、カウンタ変数を確認します。 ifステートメントの内部だけでなく、ループの繰り返しごとにiterを更新する必要があります。

第二に、divの#output2反復ごとに、あなたの出力は、既存の出力を上書きします。あなたは新しいテキストを追加したいでしょう。

このような何かが働くだろう:

更新されたコード

function createNewQueue(queue) { 
    var newqueue = new Queue(); 
    var iter=0; 
    var start=2; 

    //Initial iteration 
    var output = document.getElementById("output1"); //use a variable to store the output element 
output.innerHTML = "<p>Iteration "+ iter + ": L1 = " + queue.print() + " Q1 =" + newqueue.print() + "</p>"; 

    while(!queue.isEmpty()) { 
    iter++; //make sure to increment the counter with each loop 

    if(queue.deleteByFactor(start)) {   
     newqueue.insert(start); 

     //append the new output to the existing output 
     output.innerHTML = output.innerHTML + "<p>Iteration " + iter + ": L1 = " + queue.print() + " Q1 =" + newqueue.print() + "</p>"; 
    } 
    start++; 
    } //while  
} //createNewQueue() 

出力

反復0:L1 = 2,3,4,5,6,7 、8,9,10、Q1 =
反復1:L1 = 3,5,7,9、Q1 = 2、
反復6:L1 = Q1 = 2,3,5,7、Q3 = 1、Q1 = 2,3,5、

あなたはそれが、この中で作業を見ることができますフィドルをJS:助けhttps://jsfiddle.net/igor_9000/abnbpp01/

願っています!

+0

多くのお手伝いをしてくれますが、あなたの反復回数が0,1,2、 4,6 ....彼らは0,1,2,3,4 – Natedizzy

+0

でなければなりません。それはあなたのために働いてうれしいです。あなたのコードでは、 'deleteByFactor()'関数はそれらの反復中にfalseを返すので、if文(if(queue.deleteByFactor(start))は反復3と5の間には決して入力されません。 –

関連する問題