2016-04-03 32 views
0

2 yığına eklemeye çalışıyorum, ancak programın çalıştırılmasının nedenlerinden dolayı ilk döngü çalışıyor ve ikinci döngüyü atlıyor.2 farklı yığına farklı değerler eklemek için iki kez nasıl döngü yapılır

do 
{ 
    cout<<"enter data: "; 
    cin>>data; 
    cout<<data<<endl; 
    if (cin.fail()){ 
     cin.clear(); 
     break; 
    } 
    else{ 
     stack1.push(data); 
    } 
}while(cin.good()); 
//stack 2 
do 
{ 
    cout<<"enter data: "; 
    cin>>data; 
    cout<<data<<endl; 
    if (cin.fail()){ 
     cin.clear(); 
     break; 
    } 
    else{ 
     stack2.push(data); 
    } 
}while(cin.good()); 
+0

Eğer "cin.good()" yanlış olursa, ikinci döngüyü hiçbir zaman başlatmaz. Belirli bir girişi kontrol edebilir ve bu –

+0

'u okuduğunuzda ikinci döngüye gidebilirsiniz. İlk döngü sonunda cin.good() yanlıştır. Belki ikinci döngüden önce tekrar cin.good() yapmayı deneyin. –

+1

Neden escond döngüsünü girmez ?, bu bir do-while, her zaman ilk döngüyü yapar. –

cevap

1

Eğer geçerli veriler var bir kere ilk döngünün dışında break, muhtemelen bir şey daha böyle istemiyorum Çünkü:

do 
{ 
    cout<<"enter data: "; 
    cin>>data; 
    cout<<data<<endl; 
    if (cin.fail()){ 
     cin.clear(); 
    } 
    else{ 
     stack1.push(data); 
     break; 
    } 
}while(cin.good()); 
+0

Bu, yalnızca bir öğeyi yığına eklememe izin verir. –

+0

Ah, tamam. Kodun biraz kafa karıştırıcı olduğunu bulun :(Girdi başarısız olana kadar bir şeyler girmeye devam etmek istiyorsun, eğer 'while' durumu başarısız olursa, 'cin' de düzeltmemelisin? Ve belki de 'enter' enter tuşuna basar ? –

0

aynı döngü kendisi

push kodları hem kullanmayı deneyin
do 
{ 
cout<<"enter data: "; 
cin>>data; 
cout<<data<<endl; 
if (cin.fail()){ 
cin.clear(); 
break; 
} 
else{ 
stack1.push(data); 
stack2.push(data); 
} 
}while(cin.good());