2013-03-04 71 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

使弹出返回一个值,并使这个值等于你弹出的元素(在我看来这是你打印的值)。