2013-03-04 72 views
-9

我在這個程序的最後部分有問題。我如何顯示已彈出的元素?在C++中顯示彈出的元素?

我試圖改變循環,但不能..

#include<iostream.h> 
typedef struct TINDANAN 
{ 
    int atas; 
    char senarai[4]; 
} tindanan; 

void cipta(tindanan *t); 
void push(tindanan *t); 
void pop(tindanan *t); 
int penuh(tindanan *t); 
int kosong(tindanan *t); 

void main() 
{ 
    int pilihan,jawapan,i; 
    tindanan t; 
    cipta(&t); 
    cout<<"\n1->Push\t\n 2->Pop \t\n 3-> Keluar \n pilihan ="; 
    cin>>pilihan; 
    while(pilihan !=3) 
    { 
     switch (pilihan) 
     { 
      case 1: push(&t); 
       break; 
      case 2: pop(&t); 
       break; 
      default : cout<<"\nTidak Sah"; 
     } 
     cout<<"\n1->Push\t\n 2->Pop \t\n 3-> Keluar \n pilihan ="; 
     cin>>pilihan; 
    } 
} 

void cipta (tindanan *t) 
{ 
    t->atas =-1; 
} 

int penuh (tindanan *t) 
{ 
    if (t->atas ==3) 
     return (1); 
    else 
     return (0); 
} 

void push (tindanan *t) 
{ 
    int i; 
    char data; 
    if (penuh(t) ==1) 
     cout<<"\nTindanan Penuh\n"; 
    else 
    { 
     cout<<"\nHuruf Character: "; 
     cin>>data; 
     t->atas++; 
     t->senarai[t->atas]=data; 
     cout<<"\nKandungan Timbunan :\nIndex | Data\n"; 
     for(i=t->atas;i>-1;i--) 
      cout<<"| "<<i<< " | "<< t->senarai[i]; 
    } 
    cout<<"\n"; 
} 

int kosong (tindanan *t) 
{ 
    if (t->atas ==-1) 
     return (1); 
    else 
     return (0); 
} 

void pop (tindanan *t) 
{ 
    int i; 
    if(kosong(t) == 1) 
     cout<<"\nTindanan Kosong\n"; 
    else 
    { 
     t->atas--; 
     cout<<"\nkandungan Timbunan :\nIndex | data\n"; 
     for(i=t->atas;i>-1;i--) 
      cout<<" | "<<i<< " | "<<(t->senarai[i]); 
     cout<<"\nPop Item"; 
     for(i=3;i>t->atas;i--) 
      cout<<"| "<<i<< " | "<< t->senarai[i]; 
    } 
} 

對不起,我只是學習C今年++。

+1

將其翻譯成英文將是一個不錯的第一步。 – 2013-03-04 16:44:25

+0

如果您修復代碼格式,您可能會得到更多答案。添加標籤等。還沒有見過''在一段時間內用過! – 2013-03-04 16:45:05

+0

你想展示每個itme都會彈出嗎? – lokoko 2013-03-04 16:45:27

回答

0

我不確定你在彈出函數中的第二個循環,但這個修改過的彈出窗口應該顯示彈出的值以及現有內容。

void pop (tindanan *t) 
{ 
    int i; 
    if(kosong(t) == 1) 
    cout<<"\nTindanan Kosong\n"; 
    else 
    { 
    cout<<"\nPop Item: " << (t->senarai[t->atas]); 

    t->atas--; 

    cout<<"\nkandungan Timbunan :\nIndex | data\n"; 
    for(i = t->atas; i > -1; i--) 
     cout<<" | "<<i<< " | "<<(t->senarai[i]); 
    } 
}  

但總的來說它將使意義有彈出回報的項目,因爲這是怎麼會事一般工作。但是再次推一般也需要推動物品。

另外,你可以寫這樣的流行音樂,它會返回彈出的項目,然後你可以顯示它,但是你想要的。

char pop (tindanan *t) 
{ 
    char popped_item = -1; 
    int i; 
    if(kosong(t) == 1) 
    cout<<"\nTindanan Kosong\n"; 
    else 
    { 
    cout<<"\nPop Item: " << (t->senarai[t->atas]); 

    popped_item = t->senarai[t->atas]; 

    t->atas--; 

    cout<<"\nkandungan Timbunan :\nIndex | data\n"; 
    for(i = t->atas; i > -1; i--) 
     cout<<" | "<<i<< " | "<<(t->senarai[i]); 
    } 
    return popped_item; 
}  
+0

如何顯示已經彈出的值?或刪除。 – user2132471 2013-03-04 17:06:44

+0

在你減少atas(t-> atas--)之前,這個(t-> senarai [t-> atas])是彈出的值。所以,無論你想要打印出來還是從函數中返回。 – spartacus 2013-03-04 17:10:55

+0

好的,非常感謝。幫助我。 – user2132471 2013-03-04 17:20:58

0

使彈出返回一個值,並使這個值等於你彈出的元素(在我看來這是你打印的值)。