2016-03-25 13 views
0

Kuyruktaki öğeler sıfırlamaya devam ediyor. Ana menüde Ekran işlevini seçtikten sonra sıralardaki tüm öğeleri nasıl görüntüleyebilirim? Öğeleri "Öğe Ekle" İşlevini kullanarak yerleştirdikten sonra Ekran işlevini seçtiğimde, koyduğum öğeleri göstermiyor. Ana menüde Ekran işlevini seçtikten sonra sıralardaki tüm öğeleri nasıl görüntüleyebilirim?Sıra farklı işlevde nasıl kullanılır?

#include <iostream> 
#include "linkedQueue.h" 

using namespace std; 

void mainMenu(); 
void addQueues(); 
void Display(); 

int main() 
{ 
    mainMenu(); 
    system("pause>0"); 
    return 0; 
} 

void mainMenu() 
{ 
    system("cls"); 
    int num; 
    linkedQueueType<int> queue; 
    cout << "\t\t\t OPERATIONS"; 
    cout << "\n\n [1] Add items"; 
    cout << "\n [2] Delete items"; 
    cout << "\n [3] Show the number of items"; 
    cout << "\n [4] Show min and max items"; 
    cout << "\n [5] Find an item"; 
    cout << "\n [6] Sort items"; 
    cout << "\n [7] Print all items"; 
    cout << "\n [8] Exit"; 

    cout << " \n\n Enter choice: "; 
    cin >> num; 
    switch (num) 
    { 
    case 1: 

     int x; 
     char ch; 
     cout << "\nAdd number: "; 
     cin >> x; 
     queue.addQueue(x); 
     cout << "Enter again? (Y/N)  "; 
     cin >> ch; 
     while (ch == 'Y') 
     { 
      cout << "\nAdd number: "; 
      cin >> x; 
      queue.addQueue(x); 
      cout << "Enter again? (Y/N)  "; 
      cin >> ch; 
     } 
     if (ch == 'N') 
     { 
      mainMenu(); 
     } 
     break; 

    case 7: 

     cout << "Queue Elements: "; 

     if (queue.isEmptyQueue()) 
      cout << "Queue is empty - add item first\n"; 
     else 
     { 
      while (!queue.isEmptyQueue()) 
      { 
       cout << queue.front() << " "; 
       queue.deleteQueue(); 
      } 
     } 

    break; 

    default: 
     cout << "Invalid" << endl; 
    } 
} 
+0

deleteQueue herhangi cout() var mı içindeyken kodunuzu koymak sonra bu num=0 olarak 0'a num başlatabilir önlemek İÇİN? Bunun dışında, programınızda Kuyruktaki öğeleri görüntülemek için baskı bildirimi yoktur. – XZ6H

cevap

0

Sorun, hangi sıraya yeniden ve yeniden başlatıldığından dolayı mainMenu() işlevine yapılan özyinelemeli çağrıdır. O mainmenu içinde bir süre döngü() kullanın ve döngü

#include <iostream> 
#include "linkedQueue.h" 
using namespace std; 
void mainMenu(); 
void addQueues(); 
void Display(); 

int main() 
{ 
mainMenu(); 
system("pause>0"); 
return 0; 
} 

void mainMenu() 
{ 
system("cls"); 
int num=0; 
linkedQueueType<int> queue; 
while(num!=8) 
{ 
cout << "\t\t\t OPERATIONS"; 
cout << "\n\n [1] Add items"; 
cout << "\n [2] Delete items"; 
cout << "\n [3] Show the number of items"; 
cout << "\n [4] Show min and max items"; 
cout << "\n [5] Find an item"; 
cout << "\n [6] Sort items"; 
cout << "\n [7] Print all items"; 
cout << "\n [8] Exit"; 

cout << " \n\n Enter choice: "; 
cin >> num; 
switch (num) 
{ 
case 1: 

    int x; 
    char ch; 
    cout << "\nAdd number: "; 
    cin >> x; 
    queue.addQueue(x); 
    cout << "Enter again? (Y/N)  "; 
    cin >> ch; 
    while (ch == 'Y') 
    { 
     cout << "\nAdd number: "; 
     cin >> x; 
     queue.addQueue(x); 
     cout << "Enter again? (Y/N)  "; 
     cin >> ch; 
    } 
    break; 

case 7: 

    cout << "Queue Elements: "; 

    if (queue.isEmptyQueue()) 
     cout << "Queue is empty - add item first\n"; 
    else 
    { 
     while (!queue.isEmptyQueue()) 
     { 
      cout << queue.front() << " "; 
      queue.deleteQueue(); 
     } 
    } 

break; 

default: 
    cout << "Invalid" << endl; 
} 
} 
} 
+0

Teşekkür ederim efendim! –

0

Sorun, mainMenu() işlevine yapılan özyinelemeli çağrıdır. Bir ana menüye() girmek

if (ch == 'N') 
{ 
    mainMenu(); 
} 

Her seferinde olduğu gibi yeni bir kuyruk fonksiyonu yığın üzerinde oluşturulur işlev, bu nedenle önceki işlev çağrıları elemanları içermez. Kuyruğunuzu main() işlevinde (veya başka bir yerde) başlatmak ve sonra mainMenu() işlevine bir parametre olarak iletmek isteyebilirsiniz.

+0

yapmıyor tarafından sıraya ürün ekledikten sonra Ana Menüyü görüntülemek için bir yolu var mı if (ch == 'N') { mainMenu(); } ? –