Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

[Bài tập lớn]

66 views
Skip to first unread message

Phan Văn Thanh

unread,
May 9, 2012, 6:50:42 PM5/9/12
to int2...@googlegroups.com
Em thưa cô, trong hàm trả về chữ số thứ i của số lớn đấy ạ, giá trị trả về của hàm có kiểu unsigned char  [unsigned char operator[](unsigned int i);], e nghĩ nếu mình đã có ý định là trả về chữ số thứ i của số lớn thì trả về kiểu int sẽ trực quan hơn ạ. Và chúng em có thể tự thay đổi cài đặt các hàm được k ạ?

Diep

unread,
May 10, 2012, 5:14:41 AM5/10/12
to int2202ap
Hiện rất nhiều bạn trong lớp hiểu sai về unsigned char giống bạn
ThanhPV. Theo cách hiểu sai của các bạn thì unsigned char chỉ lưu được
ký tự.

Thật ra, nó lưu mã của các kí tự mà các bạn nhìn thấy. Ví dụ khi bạn
gán biến x kiểu unsigned char bằng 'A' thì trong bộ nhớ, 1 byte dành
cho x sẽ lưu số nguyên dương 65 (là mã của kí tự 'A'). Các bạn có thể
tự kiểm tra bằng đoạn mã
unsigned char x = 'A';
cout << x << " co ma ascii = " << int(x);
Như vậy. ta có thể dùng unsigned char để lưu các giá trị nguyên dương
(giống hệt như dùng unsigned int). Khác biệt duy nhất ở đây là
unsigned char có cỡ là 1 byte, unsigned int thì có cỡ là 4 byte. Do đó
miền giá trị tương ứng là 0-255 và 0-4294967295 (tức 2^32-1).

Giao diện của các hàm bạn không được tùy tiện thay đổi. Bạn có thể
thay đổi cấu trúc dữ liệu lưu biến thành viên digitpairs hoặc có thể
bổ sung các biến thành viên phụ trợ nếu cần thiết. Nếu thay đổi
digitpairs thì thảo luận với mình hoặc giải thích rõ ràng vào
report.pdf.

Việt Dũng

unread,
May 10, 2012, 7:37:48 AM5/10/12
to int2...@googlegroups.com
Em thưa cô, em có thay đổi và thêm một vài hàm thành viên, như vậy có được không ạ.

Các hàm thành viên được thay đổi:

friend const BigNumber operator++(const BigNumber& n1);   // Nạp chồng phép tự tăng trước
friend const BigNumber operator++(const BigNumber& n1 , int );   // Nạp chồng phép tự tăng sau
friend const BigNumber operator--(const BigNumber& n1);  // Nạp chồng phép tự gi ảm trước
friend const BigNumber operator--(con st BigNumber& n1, int);   // Nạp chồng phép tự gi ảm sau 
const BigNumber operator=(const BigNumber& n1);   // Gán số lớn hiện tại bằng n1 ,
                                                                             // đồng thời trả về giá trị này

Được thay đổi thành:

friend const BigNumber operator++(BigNumber& n1); // Nap chong phep tu tang truoc
friend const BigNumber operator++(BigNumber& n1, int); // Nap chong phep tu tang sau
friend const BigNumber operator--(BigNumber& n1); // Nap chong phep tu giam truoc
friend const BigNumber operator--(BigNumber& n1, int); // Nap chong phep tu giam sau
BigNumber& operator=(const BigNumber& n1); // Gan so lon hien tai bang n1, 
                                                                    // dong thoi tra ve gia tri nay

Đỗ Văn Tú

unread,
May 10, 2012, 10:01:00 AM5/10/12
to int2202ap
về việc trả về unsigned char, em đã hiểu.
nhưng lại đặt ra một vân đề khác: hàm sẽ trả về chữ số thứ i nghĩa là
chữ số có vị trí i được lưu trong vector phải không?
vì thứ tự trong vector bị đảo ngược lại so với dãy số nhập vào mà

Khổng anh thắng

unread,
May 12, 2012, 1:02:51 PM5/12/12
to int2202ap
Bạn ơi cho mình hỏi là hàm :
string toString() const; // Trả về xâu giá trị của số lớn
nghĩa là j vậy , mình ko hiểu rõ ý của hàm này,

Phan Văn Thanh

unread,
May 12, 2012, 9:46:40 PM5/12/12
to int2...@googlegroups.com
Hàm này trả về xâu của số lớn .Tức là số lớn là 1234567890 chẳng hạn thì hàm này tạo ra biến string có chứa nội dung "1234567890"

Vào 00:02:51 UTC+7 Chủ nhật, ngày 13 tháng năm năm 2012, Khổng anh thắng đã viết:

Khổng anh thắng

unread,
May 13, 2012, 4:27:32 AM5/13/12
to int2202ap
Bạn ơi gơi ý cho mình chut đk ko, mình vẫn chưa nghĩ ra !

Đỗ Văn Tú

unread,
May 13, 2012, 7:39:58 AM5/13/12
to int2202ap
đơn giản chỉ cần làm ngược lại lúc chuyển từ xâu sang vector thôi mà
thôi mà.
vd: x là kí tự có mã 34.
muốn biểu diễn được xâu "34" ta chỉ cần
tmp = x / 10 + '0'
tmp += x % 10 + '0'
Reply all
Reply to author
Forward
0 new messages