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

Перевод на английский язык был бы хорошим первым шагом. –

+0

Вы можете получить больше ответов, если исправить форматирование кода. Добавьте вкладки и т. Д. Не видели '' и в тоже время! –

+0

Вы хотите показать каждое сообщение, которое выскочит? – lokoko

ответ

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

+0

Прежде чем вы уменьшите atas (t-> atas--), это значение (t-> senarai [t-> atas]) - это значение. Поэтому распечатайте это, однако вы хотите или вернуть его из функции. – spartacus

+0

ok, большое спасибо. за помощь. – user2132471

0

Сделать поп возвращение значения и сделать это значение равным элементу, который вы выскочите (кажется, это значение, которое вы печатаете).

Смежные вопросы