Tải bản đầy đủ (.docx) (5 trang)

Chương 7 Các dòng tập tin (Stream) Các bộ phận định dạng và các hàm định dạng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (85.24 KB, 5 trang )

Các bộ phận định dạng và các hàm định dạng
7.1. Các bộ phận định dạng (định nghĩa trong <iostream.h>)
Các bộ phận định dạng gồm:
dec // như cờ ios::dec
oct // như cờ ios::oct
hex // như cờ ios::hex
endl // xuất ký tự ‘\n’ (chuyển dòng)
flush // đẩy dữ liệu ra thiết bị xuất
Chúng có tác dụng như cờ định dạng nhưng được viết nối đuôi trong toán tử xuất nên tiện
sử dụng hơn.
Ví dụ xét chương trình đơn giản sau:
//CT7_08.CPP
// Bo phan dinh dang
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cout.setf(ios::showbase)
cout << "ABC" << endl << hex << 40 << " " << 41;
getch();
}
Chương trình sẽ in 2 dòng sau ra màn hình:
ABC
0x28 0x29
7.2. Các hàm định dạng (định nghĩa trong <iomanip.h>)
Các hàm định dạng gồm:
setw(int n) // như cout.width(int n)
setpecision(int n) // như cout.pecision(int n)
setfill(char ch) // như cout. fill(char ch)
setiosflags(long l) // như cout.setf(long f)


resetiosflags(long l) // như cout.unsetf(long f)
Các hàm định dạng có tác dụng như các phương thức định dạng nhưng được viết nối đuôi
trong toán tử xuất nên tiện sử dụng hơn.
Chú ý 1: Các hàm định dạng (cũng như các bộ phận định dạng) cần viết trong các toán tử
xuất. Một hàm định dạng đứng một mình như một câu lệnh sẽ không có tác dụng định dạng.
Chú ý 2: Muốn sử dụng các hàm định dạng cần bổ sung vào đầu chương trình câu lệnh:
#include <iomanip.h>
Ví dụ có thể thay phương thức
cout.setf(ios::showbase) ;
trong chương trình của mục 7.1 bằng hàm
cout << setiosflags(ios::showbase);
(chú ý hàm phải viết trong toán tử xuất)
Như vậy chương trình trong 7.1 có thể viết lại theo các phương án sau:
Phương án 1:
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main()
{
clrscr();
cout << setiosflags(ios::showbase) ;
cout << "ABC" << endl << hex << 40 << " " << 41;
getch();
}
Phương án 2:
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main()
{

clrscr();
cout << "ABC" << endl << setiosflags(ios::showbase)
<< hex << 40 << " " << 41;
getch();
}
Dưới đây là ví dụ khác về việc dùng các hàm và bộ phận định dạng. Các câu lệnh:
int i = 23;
cout << i << endl << setiosflags(ios::showbase)
<< hex << i << dec << setfill(‘*’)
<< endl << setw(4) << i << setfill(‘0’)
<< endl << setw(5) << i ;
sẽ in ra màn hình như sau:
23
0x17
**23
00023
386
7.3. Ví dụ: Chương trình dưới đây minh hoạ cách dùng các hàm định dạng và phương thức
định dạng để in danh sách thí sinh dưới dạng bảng với các yêu cầu sau: Số báo danh in 4 ký tự
(chèn thêm số 0 vào trước ví dụ 0003), tổng điểm in với đúng một chữ số phần phân.
//CT7_08.CPP
// Bo phan dinh dang
// Ham dinh dang
// Co dinh dang
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
struct TS
{
int sobd;

char ht[25];
float dt,dl,dh,td;
};
class TSINH
{
private:
TS *ts;
int sots;
public:
TSINH()
{
ts=NULL;
sots=0;
}
TSINH(int n)
{
ts=new TS[n+1];
sots=n;
}
~TSINH()
{
if (sots)
{
sots=0;
ts = NULL;
}
388
}
void nhap();
void sapxep();

void xuat();
} ;
void TSINH::nhap()
{
if (sots)
for (int i=1; i<=sots; ++i)
{
cout << "\nThi sinh "<< i << ": " ;
cout << "\nSo bao danh: " ;
cin >> ts[i].sobd;
cin.ignore();
cout << "Ho ten: " ;
cin.get(ts[i].ht,25);
cout << "Diem toan, ly , hoa: " ;
cin >> ts[i].dt >> ts[i].dl >> ts[i].dh;
ts[i].td = ts[i].dt + ts[i].dl + ts[i].dh;
}
}
void TSINH::sapxep()
{
int i,j;
for (i=1; i< sots; ++i)
for (j=i+1; j<= sots; ++j)
if (ts[i].td < ts[j].td)
{
TS tg;
tg=ts[i];
ts[i]=ts[j];
ts[j]=tg;
}

}
void TSINH::xuat()
{
if (sots)
{
cout << "\nDanh sach thi sinh:" ;
cout.precision(1);
cout << setiosflags(ios::left);
cout << "\n" << setw(20) << "Ho ten" << setw(8)
<< "So BD" << setw(10) << "Tong diem";
for (int i=1; i<=sots; ++i)
cout << "\n" << setw(20)<<setiosflags(ios::left) << ts[i].ht
<< setw(4) << setfill('0') << setiosflags(ios::right)
<< ts[i].sobd << " " << setfill(32)
<< setiosflags(ios::left|ios::showpoint)
<< setw(10) << ts[i].td;
}
}
void main()
{
int n;
clrscr();
cout << "\nSo thi sinh: ";
cin>>n;
TSINH *t = new TSINH(n);
t->nhap() ;
t->sapxep();
t->xuat();
getch();
delete t;

}
390

×