2015-12-27 2 views
1

Предположим, что A является table чисел с плавающей точкой, имеющей krows и mcolumns, и B является table чисел с плавающей точкой, имеющей mrows и ncolumns. Мы хотим, чтобы сгенерировать new table, C, где каждый элемент C определяется:программирования C застряли вычисления матрицы (2D массива)

C[i][j] = A[i][1]*B[1][j]+ A[i][2]*B[2][j]+ ,..., A[i][m]*B[m][j] 

where i = 1, 2, …, k and j = 1, 2, …, n 

и это то, что я работаю на

#include <stdio.h> 
#include <math.h> 
int main() 
{ 
float A[10][10], B[10][10], C[10][10]; 
int k, i, j, l, m, n; 
printf("Enter the number of rows and columns of matrix A:\n"); 
scanf("%d%d",&k,&m); 
printf("Enter elements of matrix A:\n"); 
for (i=0;i<k;i++) 
    for (j=0;j<m;j++) 
    scanf("%f",&A[i][j]); 

printf("Enter the number of rows and columns of matrix B:\n"); 
scanf("%d%d",&m,&n); 
printf("Enter elements of matrix N:\n"); 
for (i=0;i<m;i++) 
    for (j=0;j<n;j++) 
    scanf("%f",&B[i][j]); 

После сканирования двух matrix, что я должен делать следующий для расчета C, этот меня смущает. Я не знаю, могу ли я поместить оба сканирования A и B в один вложенный цикл. Любая помощь будет принята с благодарностью.

+0

Вы используете 'm' дважды. Я думаю, вы имели в виду «l» в первый раз. –

+0

О, это просто избыточный, я использовал m дважды, потому что число столбцов в A равно количеству строк в B –

+0

«_ где i = 1, 2, ..., k и j = 1, 2, ..., n_» - Но индексы массива начинаются с 0 и заканчиваются на длине -1 в C. Вы имели в виду «где i = 0, 1, 2, ..., k-1 и j = 0, 1, 2, ..., n-1" ? –

ответ

1

Матрица A имеет размер kxm, а матрица B имеет размер mxn. Результирующая матрица будет иметь размер kxn. Итак, вы можете запустить цикл for, как показано ниже.

for (i=0;i<k;i++) 
    for(j=0;i<n;j++) 
    { 
    //perform the desired operation in matrix C . 
    } 

Обратите внимание: вы используете «m» дважды.

+0

что меня озадачивает количество столбцов в A, равное количеству строк в B, которое является «m», поэтому я думаю, что могут быть некоторые конфликты при сканировании двух матриц отдельно ... –

-1

Вы можете попробовать что-то вроде этого, вместо использования букв A, B, C. «row» и «col» используется массив матрицы, уведомление col[0] должно быть равно row[1].

float matrix[3][10][10]; 
int i, j, k, row[2], col[2]; 
for(i=0; i<2; i++){ 
    printf("Enter the number of rows and columns of matrix %d:\n", i+1); 
    scanf("%d %d", &row[i], &col[i]); 
    for(j=0; j<row[i]; j++) 
    for(k=0; k<col[i]; k++) 
     scanf("%f", &matrix[i][j][k]); 
} 
Смежные вопросы