Nhờ giúp sửa lỗi bài tập mảng 2 chiều

Mọi người giúp mình với ạ.
Đề bài là:

Bài mình làm:

#include <iostream>

using namespace std;

int main()
{
    int m,n,q;
    cin >> m >> n >> q;
    int soNguyen[m][n];
    int cauHoi[q][2];

    for (int i=1;i<=m;i++)
        for (int j=1;j<=n;j++)
        cin >> soNguyen[i][j];

    for (int i=1;i<=q;i++)
        for (int j=1;j<=2;j++)
        cin >> cauHoi[i][j];
    for (int i=1;i<=q;i++)
        cout << soNguyen[cauHoi[i][1]][cauHoi[i][2]] << endl;
    return 0;
}

Khi nhập ba số nguyên m,n,q lớn ví dụ 100,132, 231 thì sẽ báo lỗi.

1 Like

Cho tui hỏi:

  • Phần tử đầu tiên/ cuối cùng của mảng có index là gì?
  • Tại sao lại duyệt mảng từ 1 tới q?
1 Like

duyệt từ 1 đến q vì có q hàng
còn câu hỏi t1 nghĩa là s ạ ?

Đề khó hiểu quá, nếu như chỉ cần in ra giá trị của phần tử hàng i cột j thì cái mảng Q câu hỏi có ý nghĩa gì đâu. Với bạn đã nhập giá trị cho các phần tử của mảng [ma trận] chưa?

Chỉ số của mảng bắt đầu từ mấy? 0 hay 1?

Trong C++ nên hạn chế khai báo kiểu int soNguyen[m][n], cái này là từ C. Dùng từ khóa new.

2 Likes

Vì thớt muốn dùng mảng câu hỏi thôi :smiley: chứ đâu cần thiết.

2 Likes

chỉ số của mảng bắt đầu từ 1

đề bài của mình là cần phải có cả q nữa

Vậy nếu bạn nhập giá trị nhỏ thì nó có chạy được không?

2 Likes

Xin chân thành khuyên bạn học lỹ lại kiến thức về mảng ạ.

2 Likes

có, vẫn chạy bình thường


nếu mình nhập vào như hình này thì t1 sẽ cho ra 5 4;
T2 sẽ ra:
299
276
882
571
515
276
96
312
26
215
47
489
938
250
895

Có khi nào là tràn mảng không nhỉ?

Thay vì đặt như trên thì anh có thể thử như sau:

long long soNguyen[m + 9][n + 9];
long long cauHoi[q + 9][10];
2 Likes

+1 là được rồi.

Vấn đề là khai báo int a[n] chỉ gcc còn giữ.

3 Likes

Chắc là tràn stack mem rồi. Cấp phát động hoặc đưa mảng 2 chiều này thành global variable thôi.

Tại sao bạn không thử gộp 2 vòng for vào với nhau nhỉ?

2 Likes

cảm ơn ạ, mình làm ra rồi :laughing:

vâng, mình đổi lại là soNguyen[1000][1000]

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?