Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Nod{
- char val;
- Nod * urm;
- public:
- char getVal(){return val; }
- Nod *getUrm() { return urm; }
- friend class Coada;
- };
- class Coada{
- Nod *prim;
- Nod *ultim;
- public:
- void push (char x);
- void pop ();
- char top ();
- void afis();
- Coada() { prim = NULL; ultim = NULL; }
- Nod* get_prim(){ return prim; }
- friend ostream &operator<<(ostream &o, Coada &c);
- friend istream &operator>>(istream &i, Coada &c);
- Coada operator+( Coada B);
- Coada operator-( Coada &B);
- };
- void Coada::push(char x){
- if( prim == NULL){
- prim=new Nod;
- prim->val=x;
- prim->urm=NULL;
- ultim=prim;
- }
- else{
- Nod *nou;
- nou=new Nod;
- nou->val=x;
- nou->urm=NULL;
- ultim->urm=nou;
- ultim=nou;
- }
- }
- void Coada::pop(){
- if(prim==NULL)
- cout<<"Coada e goala.";
- else{
- Nod *nou=prim;
- nou->urm=prim->urm;
- prim=prim->urm;
- delete nou;
- }
- }
- char Coada::top(){
- if(prim!=NULL)
- return prim->val;
- else
- return 0;
- }
- ostream &operator<<(ostream &o, Coada &c){
- if( c.prim == NULL)
- o<<"Coada e goala."<<endl;
- else {
- Nod *nou= c.get_prim();
- while (nou != NULL) {
- o<<nou->getVal();
- nou=nou->getUrm();
- c.pop();
- }
- }
- return o;
- }
- istream &operator>>(istream &i,Coada &c)
- {
- cout<<"Numarul de caractere ale cozii:";
- int n;
- i>>n;
- char caracter;
- for(int k=0;k<n;k++)
- {
- i>>caracter;
- c.push(caracter);
- }
- return i;
- }
- Coada Coada::operator+( Coada B)
- {
- Nod *nou=B.prim;
- this->ultim->urm=nou;
- return *this;
- }
- Coada Coada :: operator-(Coada &B)
- {
- while( this->top()==B.top())
- {
- this->pop();
- B.pop();
- }
- return *this;
- }
- int main()
- {
- cout<<"Tastati 1 pentru citire coada de caractere."<<endl;
- cout<<"Tastati 2 pentru push. "<<endl;
- cout<<"Tastati 3 pentru pop. "<<endl;
- cout<<"Tastati 4 pentru top."<<endl;
- cout<<"Tastati 5 afisare."<<endl;
- cout<<"Tastati 6 pentru concatenare."<<endl;
- cout<<"Tastati 7 pentru diferenta."<<endl;
- Coada c;
- int cerinta;
- cout<<endl<<"Alege cerinta:"<<endl;
- cin>>cerinta;
- do
- {
- switch(cerinta){
- case 1:
- {
- cin>>c;
- break;
- }
- case 2:
- {
- cout<<"Adaugam elementul cu valoarea:";
- char x;
- cin>>x;
- c.push(x);
- cout<<"Am adaugat "<<x<<" la finalul cozii.";
- break;
- }
- case 3:
- {
- c.pop();
- cout<<"Am apelat functia pop.";
- break;
- }
- case 4:
- {
- cout<<"Varful cozii este "<<c.top()<<".";
- break;
- }
- case 5:
- {
- cout<<"Coada este "<<c<<".";
- break;
- }
- case 6:
- {
- Coada a,b;
- cout<<"Primul sir:"<<endl;
- cin>>a;
- cout<<"Al doilea sir:"<<endl;
- cin>>b;
- a=a+b;
- cout<<"Sirul a+b este "<<a;
- break;
- }
- case 7:
- {
- Coada a,b;
- cout<<"Primul sir:"<<endl;
- cin>>a;
- cout<<"Al doilea sir:"<<endl;
- cin>>b;
- a=a-b;
- cout<<"Sirul a-b este "<<a;
- break;
- }
- default:
- {
- break;
- }
- }
- cout<<endl;
- cout<<"Alege cerinta:"<<endl;
- cin>>cerinta;
- }
- while(cerinta>=1 && cerinta <=7);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement