answersLogoWhite

0

You took an example of The Product AB is determined as the dot products of the ith row in A and the jth column in B,placed in ith row and jth column of the resulting m x p matrix C.

so: this may help you.

#include <stdio.h>

#include <stdlib.h>

// function prototypes

void Matrix_Mult( int a1[][3], int a2[][4], int a3[][4] );

void Matrix_MultAlt( int a1[][3], int a2[][4], int a3[][4] );

int dot3(const int a1[][3], const int a2[][4], int row, int col);

void PrnNx4 (int ar[][4], int n);

//---------------------------------------------------------------------------------

// Function: main(void)

// Description:

// demonstration of Matrix Multiplication

//

// Programmer: Paul Bladek

//

// Date: 10/31/2001

//

// Version: 1.0

//

// Environment: Hardware:IBM Pentium 4

// Software: Microsoft XP with .NET framework for execution;

// Compiles under Microsoft Visual C++.Net 2005

//

// Calls: Matrix_Mult(int a1[][3], int a2[][4], int a3[][4])

// Matrix_MultAlt(int a1[][3], int a2[][4], int a3[][4])

// PrnNx4(int ar[][4]

//

//

// Parameters: int a1[][3] -- left matrix

// int a2[][4] -- right matrix

// int a3[][4] -- answer matrix

//

// Returns: EXIT_SUCCESS

// ------------------------------------------------------------------------------

int main(void)

{

int A[2][3] = {{1, 3, 4},

{2, 0, 1}},

B[3][4] = {{1, 2, 3, 1},

{2, 2, 2, 2},

{3, 2, 1, 4}},

C[2][4] = {{0, 0, 0, 0},

{0, 0, 0, 0}};

Matrix_Mult(A, B, C);

PrnNx4(C, 2);

Matrix_MultAlt(A, B, C); // alternate form that calls dot3

PrnNx4(C, 2);

return EXIT_SUCCESS;

}

//---------------------------------------------------------------------------------

// Function: Matrix_Mult(int a1[][3], int a2[][4], int a3[][4])

// Description:

// multiplies a 2X3 matrix by a 3X4 matrix

//

// Programmer: Paul Bladek

//

// Date: 10/31/2001

//

// Version: 1.0

//

// Environment: Hardware:IBM Pentium 4

// Software: Microsoft XP with .NET framework for execution;

// Compiles under Microsoft Visual C++.Net 2005

//

// Calls: None

//

// Called By: main()

//

// Parameters: int a1[][3] -- left matrix

// int a2[][3] -- right matrix

// int a3[][3] -- answer matrix

// ------------------------------------------------------------------------------

void Matrix_Mult(int a1[][3], int a2[][4], int a3[][4])

{

int i = 0;

int j = 0;

int k = 0;

for(i = 0; i < 2; i++)

for( j = 0; j < 4; j++)

for( k = 0; k < 3; k++)

a3[i][j] += a1[i][k] * a2[k][j];

}

//---------------------------------------------------------------------------------

// Function: Matrix_MultAlt(int a1[][3], int a2[][4], int a3[][4])

// Description:

// multiplies a 2X3 matrix by a 3X4 matrix -- Alternate Form

//

// Programmer: Paul Bladek

//

// Date: 10/31/2001

//

// Version: 1.0

//

// Environment: Hardware:IBM Pentium 4

// Software: Microsoft XP with .NET framework for execution;

// Compiles under Microsoft Visual C++.Net 2005

//

// Calls: dot3(const int a1[][3], const int a2[][4], int row, int col)

//

// Called By: main()

//

// Parameters: int a1[][3] -- left matrix

// int a2[][3] -- right matrix

// int a3[][3] -- answer matrix

// ------------------------------------------------------------------------------

void Matrix_MultAlt(int a1[][3], int a2[][4], int a3[][4])

{

int i = 0;

int j = 0;

for( i = 0; i < 2; i++)

for( j = 0; j < 4; j++)

a3[i][j] = dot3(a1, a2, i, j);

}

//---------------------------------------------------------------------------------

// Function: dot3(const int a1[][3], const int a2[][4], int row, int col)

// Description:

// dot product of a1 row and a2 col

//

// Programmer: Paul Bladek

//

// Date: 10/31/2001

//

// Version: 1.0

//

// Environment: Hardware:IBM Pentium 4

// Software: Microsoft XP with .NET framework for execution;

// Compiles under Microsoft Visual C++.Net 2005

//

// Calls: None

//

// Called By: Matrix_MultAlt(int a1[][3], int a2[][4], int a3[][4])

//

// Parameters: int a1[][3] -- left matrix

// int a2[][3] -- right matrix

// int row -- the row number

// int col -- the column number

//

// Returns: the dot product

// ------------------------------------------------------------------------------

int dot3(const int a1[][3], const int a2[][4], int row, int col)

{

int k = 0;

int sum = 0;

for( k = 0; k < 3; k++)

sum += a1[row][k] * a2[k][col];

return sum;

}

//---------------------------------------------------------------------------------

// Function: PrnNx4(int ar[][4], int n)

// Description:

// prints out an NX4 matrix

//

// Programmer: Paul Bladek

//

// Date: 10/31/2001

//

// Version: 1.0

//

// Environment: Hardware:IBM Pentium 4

// Software: Microsoft XP with .NET framework for execution;

// Compiles under Microsoft Visual C++.Net 2005

//

// Called By: main()

//

// Parameters: int ar[][4] -- matrix to print

// int n -- number of elements

// ------------------------------------------------------------------------------

void PrnNx4 (int ar[][4], int n)

{

int i = 0;

int j = 0;

for(i = 0; i < n; i++)

{

for( j = 0; j < 4; j++)

printf("%4d", ar[i][j]);

putchar('\n');

}

}

User Avatar

Wiki User

13y ago

Still curious? Ask our experts.

Chat with our AI personalities

CoachCoach
Success isn't just about winning—it's about vision, patience, and playing the long game.
Chat with Coach
BlakeBlake
As your older brother, I've been where you are—maybe not exactly, but close enough.
Chat with Blake
RossRoss
Every question is just a happy little opportunity.
Chat with Ross

Add your answer:

Earn +20 pts
Q: How do you do matrix multiplication in c using structure?
Write your answer...
Submit
Still have questions?
magnify glass
imp