Hi mọi người.
Mình có làm 1 bài tập sau nhưng không hiểu vì sao gặp lỗi !
Đề bài: Thực hiện thao tác thêm 1 dòng vào ma trận cho trước bằng con trỏ cấp 2.
Source code: http://codepad.org/9dqCpkTH
void NhapMaTran(int **a, int dong, int cot)
{
for (int i = 0; i < dong * cot; i++)
{
printf("\nNhap a[%d][%d] = ", i / cot, i % cot);
scanf("%d", *(a + i / cot) + i % cot);
}
}
void XuatMaTran(int **a, int dong, int cot)
{
for (int i = 0; i < dong * cot; i++)
{
printf("%5d", *(*(a + i / cot) + i % cot));
if ((i + 1) % cot == 0)
printf("\n");
}
}
void HoanVi(int &a, int &b)
{
int Temp = a;
a = b;
b = Temp;
}
void SwapLine(int **a, int cot, int kdong1, int kdong2)
{
for (int i = 0; i < cot; i++)
{
HoanVi(a[kdong1][i], a[kdong2][i]);
}
}
void ThemDong(int **a, int &dong, int cot, int kdong, int *b)
{
a[dong] = (int *)malloc(cot * sizeof(int));
for (int i = dong; i > kdong; i--)
{
SwapLine(a, cot, i - 1, i);
}
dong++;
int idx = 0;
for (int i = 0; i < cot; i++)
a[kdong][i] = b[i];
}
int main()
{
int dong, cot;
do
{
printf("\nNhap so luong dong: ");
scanf("%d", &dong);
printf("\nNhap so luong cot: ");
scanf("%d", &cot);
if (dong < 1 || cot < 1)
printf("\nSo luong dong hoac cot khong hop le\n");
} while (dong < 1 || cot < 1);
int **a = (int **)malloc(dong * sizeof(int));
for (int i = 0; i < dong; i++)
a[i] = (int *)malloc(cot * sizeof(int));
NhapMaTran(a, dong, cot);
XuatMaTran(a, dong, cot);
int kdong;
do
{
printf("\nNhap chi so dong can them: ");
scanf("%d", &kdong);
if (kdong < 0 || kdong > dong)
printf("\nChi so dong can them khong hop le\n");
} while (kdong < 0 || kdong > dong);
int *b = (int *)malloc(cot * sizeof(int));
for (int i = 0; i < cot; i++)
{
printf("\nNhap a[%d][%d] = ", kdong, i);
scanf("%d", &b[i]);
}
printf("\nMa tran sau khi them dong %d:\n", kdong);
ThemDong(a, dong, cot, kdong, b);
XuatMaTran(a, dong, cot);
for (int i = 0; i < dong; i++)
free(a[i]);
free(a);
getch();
return 0;
}
Vấn đề là mình ĐÃ thêm được thành công, nhưng khi thêm thì nó kèm theo 1 bảng xuất hiện với dòng chữ khá đẹp đẽ như bức hình sau:
Mọi người ai biết lỗi giúp mình nhé, xin cảm ơn