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