Task: Read sizes of A (r1×c1) and B (r2×c2); if c1≠r2, print an error. Otherwise compute A×B using triple loops and display the product (limit 50×50).
#include <stdio.h>
int main(void) {
int r1, c1, r2, c2;
int A[50][50], B[50][50], C[50][50];
printf("Enter r1 c1 (<=50): ");
if (scanf("%d %d", &r1, &c1) != 2 || r1 <= 0 || c1 <= 0 || r1 > 50 || c1 > 50) { printf("Invalid size.\n"); return 0; }
printf("Enter r2 c2 (<=50): ");
if (scanf("%d %d", &r2, &c2) != 2 || r2 <= 0 || c2 <= 0 || r2 > 50 || c2 > 50) { printf("Invalid size.\n"); return 0; }
if (c1 != r2) { printf("Incompatible sizes: c1 must equal r2.\n"); return 0; }
printf("Enter matrix A (%d x %d):\n", r1, c1);
for (int i = 0; i < r1; ++i)
for (int j = 0; j < c1; ++j) scanf("%d", &A[i][j]);
printf("Enter matrix B (%d x %d):\n", r2, c2);
for (int i = 0; i < r2; ++i)
for (int j = 0; j < c2; ++j) scanf("%d", &B[i][j]);
for (int i = 0; i < r1; ++i) {
for (int j = 0; j < c2; ++j) {
C[i][j] = 0;
for (int k = 0; k < c1; ++k) C[i][j] += A[i][k] * B[k][j];
}
}
printf("A x B =\n");
for (int i = 0; i < r1; ++i) {
for (int j = 0; j < c2; ++j) printf("%d ", C[i][j]);
printf("\n");
}
return 0;
}