Hi mọi người,
Mình có một số vấn đề thắc mắc sau về C++:
- Việc khai báo một mảng có kích thước lớn ở trong và ngoài hàm main có gì khác nhau ạ?
Ví dụ đoạn CT sau sẽ bị lỗi:
#include <iostream>
using namespace std;
int main()
{
int d[1000][1000];
for(int i = 0; i < 1000; ++i)
for(int j = 0; j < 1000; ++j)
d[i][j] = i*j;
return 0;
}
Mình có tra trên SO thì họ hướng dẫn cách fix là lôi mảng d ra ngoài hàm main hoặc để từ khóa static phía trước, hoặc cấp phát động …
Tuy mình thường code mảng toàn cục hơn nhưng trong TH này mình cũng thắc mắc vì sao như vậy? Và trong TH đó phải sửa lại kích thước mảng d bao nhiêu để ko bị lỗi khi bỏ trong hàm main?
- Đối với việc nhập/xuất file, để đơn giản và nhanh, mình thường để hai dòng sau đầu hàm main:
freopen("INPUT", "r", stdin);
freopen("OUTPUT", "w", stdout);
Một số bài thường yêu cầu đọc dữ liệu mà không cho biết kích thước của dữ liệu trước, chỉ cho biết mỗi dữ liệu ở một dòng, thì làm thế nào để đọc input như vậy được ạ?
VD: Cho 2 mảng, mảng A gồm n phần tử và mảng B gồm m phần tử. INPUT: dòng thứ nhất các phần tử mảng A, dòng thứ 2 các phần tử mảng B
x1 x2 x3 ... xn
y1 y2 y3 ... ym
- Theo mình biết kiểu long long range up khoảng 1e18. Đối với double, mình chỉ biết phần thập phân chính xác tới khoảng 15 chữ số sau dấu chấm. Vậy giới hạn ở phần nguyên là bao nhiêu ạ?
Mình cảm ơn