-9

このプログラムの最後の部分で問題が発生しました。ポップされた要素を表示するにはどうすればよいですか?

ループを変更しようとしましたが、できません。

#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++を学んでいます。

4

2 に答える 2

0

popが値を返すようにし、この値をpopしている要素と等しくします(これは印刷する値のようです)。

于 2013-03-04T16:45:19.537 に答える
0

pop関数の2番目のループで何をしようとしていたのか正確にはわかりませんが、この変更されたpopは、既存のコンテンツだけでなく、ポップされた値も表示するはずです。

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;
}    
于 2013-03-04T16:52:58.933 に答える