lthdtbai30.cpp

 /*
 Bài 30(lthdtbai30.cpp): Cho tệp văn bản "daysonguyen-bai30.txt" chứa dãy số nguyên,
 trong đó có cả số dương và số âm, trên tệp không có thông tin về số lượng số.
 Sử dụng hàng đợi lưu trữ kế tiếp để tách, đưa ra màn hình dãy các số dương và dãy các số âm,
 mỗi dãy số trên một dòng.
 */
#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;

class Queue
{
    private: 
        enum {size = 100};
        int Q[size];
        int F, R;
        
    public:
        Queue();
        void insert(int x);
        int remove();
        bool isEmpty();
};

int main()
{
    //tao 2 doi tuong hang doi
    Queue Q1, Q2;
    
    
    //tao doi tuong tep vao 
    ifstream fin("daysonguyen-bai30.txt");
    
    //khai bao bien 
    int n,count;
    
    cout<<"Chuong trinh tach so duong va so am duoc doc vao tu tep.\n\n";
    cout<<"Day so nguyen duoc doc vao tu tep la: ";
    while(fin>>n)
    {
        cout << n <<"\t";
        if(n>0) Q1.insert(n);
        else Q2.insert(n);
    }
    
    //dua ra man hinh
    cout << "\nDay so duong la: ";
    while(!Q1.isEmpty())
    {
        n = Q1.remove();
        cout<<n<<"\t";
    }
    
    cout << "\nDay so am la: ";
    while(!Q2.isEmpty())
    {
        n = Q2.remove();
        cout<<n<<"\t";
    }
    

    return 0;
}

Queue::Queue():F(-1), R(-1)
{
    
}

void Queue::insert(int x)
{
    //kiem tra hang doi day
    if(F==0 && R == size-1 || R+1 == F )
    {
        cout<<"Hang doi da day !";
        return;
    }
    
    //tang R len 1
    if(R==-1) F=R=0;
    else if(R == size-1) R=0;
    else R++;
    
    //bo sung x vao hang doi tai vi tri R;
    Q[R] = x;
    
}

int Queue::remove()
{
    //kiem tra rong
    if(F==-1)
    {
        cout<<"Hang doi da rong !";
        return 1;
    }
    
    //giu lai phan tu loi truoc
    int tg = Q[F];
    
    //tang F len 1
    if(F==R) F=R=-1;
    else if(F == size-1) F=0;
    else F++;
    
    //tra ve phan tu loai bo
    return tg;
}

bool Queue::isEmpty()
{
    return F==-1;
}

        
        
        
        

Last updated