Đề bài: Ma trận nhân ma trận
Em làm hoài không ra đáp án đúng, nhờ mọi người chỉ giúp ạ.
Code nhân 2 ma trận ra kết quả không đúng
Bạn đăng code lên dưới dạng chữ, không chụp hình theo hướng dẫn:
Khi chuyển mảng 2 chiều (giả sử mảng 2 chiều này có m dòng, n cột) về mảng 1 chiều, chỉ số sẽ chuyển thành
matrix2d[i][j] ---> matrix1d[i * n + j] // KHÔNG PHẢI i*j
3 Likes
Dạ còn sai ở đâu nữa ạ, tại em vẫn chưa ra đúng kết quả
Bạn đăng code dưới dạng text lên đây đi
1 Like
Sao anh có vẻ quạu
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void getMatrixElements(int* matrix, int r, int c) {
printf("\nEnter elements: \n");
for (int i = 0; i < r; ++i) {
for (int j = 0; j < c; ++j) {
printf("Enter a%d%d: ", i + 1, j + 1);
scanf("%d", &matrix[i*j]);
}
}
}
void multiplication(int* matrix1, int c1, int r1, int r2
,int* matrix2, int c2, int*result){
for(int i=0; i<r1; i++){
for(int j=0; j<c2; j++) {
result[i*j] = 0;
for(int k=0; k<c1; k++) {
result[i*j] += matrix1[i*k] * matrix2[k*j];
}
}
}
}
void display(int* result, int r, int c) {
printf("\nOutput Matrix:\n");
for (int i = 0; i < r; ++i) {
for (int j = 0; j < c; ++j) {
printf("%d ", result[i*r+j]);
}
}
}
int main() {
int c1 = 2;
int r1 = 2;
int* matrix1 = (int*) malloc(c1*r1*sizeof(int));
getMatrixElements(matrix1, r1, c1);
int c2 = 2;
int r2 = 2;
int* matrix2 = (int*) malloc(c2*r2*sizeof(int));
getMatrixElements(matrix2, r2, c2);
int* result = (int*) malloc(c1*r2*sizeof(int));
multiplication(matrix1, c1, r1, r2, matrix2, c2, result);
display(result, r1, c2);
free(matrix1);
free(matrix2);
free(result);
}
Ủa mình chỉ cho bạn lỗi sai ở trên rồi mà bạn không chịu sửa là sao?
1 Like
Em xin lỗi anh nha. Em ra được rồi cảm ơn anh