Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by NguyenVietNamSon ( 5 years ago )
// Để hiểu rõ hơn về những code trong hàm này thì em xem bài viết anh đã gửi nha
void REALLOC(int *&a, int oldSize, int newSize)
{
int *temp = a;
a = new int[newSize];
int Min = min(oldSize, newSize);
for(int i = 0; i < Min; ++i)
a[i] = temp[i];
delete[] temp;
}
void DocFile(int*& a, int& n, ifstream& FileIn)
{
n = 20; // cho trước 20 ô
a = new int[n];
int cnt = 0; // số lượng phần tử trong mảng ngay hiện tại
while(!FileIn.eof())
{
int x;
FileIn >> x;
// Mảng vẫn còn có thể chứa được
if(cnt < n)
a[cnt++] = x;
else // Mảng đã dùng hết số ô nhớ đang có, lúc này cần REALLOC thêm gấp 2 lần hiện tại
{
REALLOC(a, n, 2 * n);
n *= 2;
}
}
// Sau cùng khi đã đọc hết số lượng phần tử đang có trong file thì sẽ REALLOC lại theo đúng kích thước thực sự và cập nhật lại n lúc này là số lượng phần tử mà mảng đang chứa
REALLOC(a, n, cnt);
n = cnt;
}
Revise this Paste