2016-04-08 10 views
0

Farklı yığınlarda & kuyruklarında Çift veya Tek numaralı numaraları uygulamaya çalışıyorum. İşte kodum:C++ Tek ve çift sayıları ayırmak için Yığınları ve Kuyrukları kullanma

Yığın & Kuyruğumu nasıl görüntüleyebilirim? Herhangi bir sırada Tek veya Çift olarak nasıl ayırabilirim?

#include <iostream> 
#include <stack> 
#include <queue> 
using namespace std; 

int main() 
{ 
stack <int> s1; 
queue <int> q1; 
int num[10]={0}; 

for(int i = 0; i < 10; i++) 
{ 
    cout << "Enter Number " << i << ": "; 
    cin >> num[i]; 

    s1.push(num[i]); 
} 

int s2; 
int q2; 
cout << "In Stack" << "\t" << "In Queue" << endl; 

while(!q1.empty()) 
{ 
    for(int i = 0; i <10; i++) 
    { 
     if(num[i]%2 == 0) 
     { 
      s2 = s1.top(); 
      s1.pop(); 
     } 
     else 
     { 
      q2 = q1.front(); 
      q1.pop(); 
     } 
    } 
    cout << s2 << "\t\t" << q2 << endl; 
} 

return 0; 
} 
+4

ve kuyrukta Tek !?:

Bu çalışması gerekir –

+2

elde etmeye çalıştığınız net değil. Bir ['std :: stack'] (http://en.cppreference.com/w/cpp/container/stack) veya [' std :: üzerinden yineleyemezsiniz. Sıra = (http://en.cppreference.com/w/cpp/container/queue) doğrudan, bu yüzden onların değerlerini öğelerden kaldırmadan görüntülemenin bir yolu yoktur. –

+0

İki yığın ve iki sıra oluşturuyorum. Tüm eşit ve tek sayıları bir yığına eklemek istiyorum. Ayrıca bir kuyruk ile aynı istiyorum. –

cevap

0

Açıkladığım gibi, iki yığın ve iki kuyruk istediğinizi varsayalım. Tek bir garip yığın konteyner ve garip bir sıra konteynır gidecek. Hatta bir çift yığın konteynerine ve hatta bir sıra konteynerine bile gidecektir. Hatta bir yığınında

#include <stack> 
#include <queue> 

int main() 
{ 
    std::stack<int> MyOddStack; 
    std::queue<int> MyOddQueue; 

    std::stack<int> MyEvenStack; 
    std::queue<int> MyEvenQueue; 

    int MyNumbers[10]; 
    int InNum; 

    for (int i = 0; i < 10; i++) // take numbers from user and fill the container, the queue and the stack right away 
    { 
     std::cout << "Please enter number: " << std::endl; 
     std::cin >> InNum; 

     MyNumbers[i] = InNum; // put in the container 

     if (InNum % 2 == 0) // if even add to even queue and even stack 
     { 
      MyEvenQueue.push(InNum); 
      MyEvenStack.push(InNum); 
     } 
     else //else, add to odd queue and odd stack 
     { 
      MyOddQueue.push(InNum); 
      MyOddStack.push(InNum); 
     } 
    } 

    // You want to display any of the queues/stacks? 
    // put a for loop 
    // use .top() and/or .front() to display 
    // use .pop() everytime you display an element so you see the next element 

    return 0; 

} 
+0

Evet Göstermek istiyorum ama nasıl yapıyorum? Bir fikrim var ama kafamı karıştırdım .pop .front .front .back vs ... –

+0

@GabrielValedon Yığın için: buraya bakın http://stackoverflow.com/questions/12631514/how-can-i-print-out -sit-stdstack-and-return-onun-boyut-boyutlu ve aynı tekniği kullanın ama .top() yerine .top() –

İlgili konular