In ra mảng 2 chiều sau khi tạo bị sai

Mọi người giúp với, em sai chỗ nào ạ? Em muốn tạo mảng 2 chiều rồi in ra mảng nhưng lúc in ra bị sai?

#include<iostream>
using namespace std;
int main()
{
	int hang,cot;
	int a[hang][cot];
	cout<<"\nNhap so hang : ";
	cin>>hang;
	cout<<"\nNhap so cot : ";
	cin>>cot;
	for (int i=1;i<=hang;i++)
		{
			for (int n=1;n<=cot;n++)
				{
					cout<<"\nA["<<i<<","<<n<<"]=";
					cin>>a[i][n];
				}
		}
	for (int i=1;i<=hang;i++)
		{
			for (int n=1;n<=cot;n++)
				{
					cout<<a[i][n]<<"  ";
				}
		cout<<endl;	
		}
	system("pause");
	return 0;	
}
#include<stdio.h>
//#include<iotream>
#include<iostream>

using namespace std;

int main()
{
    int hang,cot;
    
    int mang[100][100];
    cout<<"\nNhap so hang : ";
    cin>>hang;
    cout<<"\nNhap so cot : ";
    cin>>cot;
   
    for (int i =1; i<=hang; i++)
    {
        for (int n =1; n<=cot; n++)
        {
           cout<<"Nhap vao hang a["<<i<<"]"<<"["<<n<<"] :" <<endl;
           cin>>mang[i][n];
        }
    }
    for (int i=1; i<=hang; i++)
    {
        for (int n=1; n<=cot; n++)
        {
            cout<<" "<<mang[i][n];
        }
        cout<<endl;
    }
//    system("pause");
    return 0;
}

///Của bạn đây…không hiểu chỗ nào cứ hỏi???

Vãi cấp phát … :grinning:

1 Like

để edit lại :smiley: …tại khi buil kiểu này nó ra kết quả…không thấy báo lỗi…lúc đầu cấp phát 1 mảng mang[100][100] rồi…nhưng thấy bạn ở đầu khai báo mảng mang[hang][cot]
cái làm theo nó có báo gì không…mình nghĩ nếu khai báo như này phải đụng đến con trỏ…sao mình khai báo

như này…nó lại ra kết quả…được…Bạn có thể giải thích được không

Muốn cấp phát vậy thì dùng cấp phát động.

int **a;
	a = new int*[dong];
	for (int i = 0; i < dong; i++)
	{
		a[i] = new int[cot];
	}

Còn tại sao ko cấp phát int mang[hang][cot] được thì bạn xem qua bài này C++ Bài 40 - Cấp phát động của anh Đạt nói khá rõ

Còn tùy compiler nữa. Chắc bạn này build trên cmd.

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