/*
* Student : Pete Houston
* ID : 20600731
* Class : C - Programming
* Homework # 5 _ 3
* Subject : Calculate addition and multiplication 2 matrices with data input from file
*/
#include <stdio.h>
#include <conio.h>
// global variables
int m_a,n_a,m_b,n_b; // m indicates row - n indicates column
int m,n;
int A[100][100],B[100][100];
// function declaration
void matrix_add();
void matrix_multi();
// main()
int main (void)
{
FILE* f;
int value;
// open file to read
f
= fopen("matrix.txt","r"); if (!f) // incase of faling to open file
{
printf("\n Could not open file matrix.txt ..."); getch();
exit(101);
} // end if
// get A[] info
fscanf(f
,"%d %*c %d",&m_a
,&n_a
); for ( m = 0 ; m < m_a ; m++ )
{
for ( n = 0 ; n < n_a ; n++ )
{
A[m][n] = value;
}
} // end for
// get B[] info
fscanf(f
,"%d %*c %d",&m_b
,&n_b
); for ( m = 0 ; m < m_b ; m++ )
{
for ( n = 0 ; n < n_b ; n++ )
{
B[m][n] = value;
}
} // end for
// check condition and print result
if ( m_a
== m_b
&& n_a
== n_b
) matrix_add
(); else printf("\n Cannot ADD ..."); // Addition if ( n_a
== m_b
) matrix_multi
(); else printf("\n Cannot MULTIPLY ... "); // Multiplication
getch();
return 0;
}
// matrix in addition
void matrix_add()
{
int C[100][100];
for ( m = 0 ; m < m_a ; m++ )
for ( n = 0 ; n < n_a ; n++ )
C[m][n] = A[m][n] + B[m][n]; // assign value to C[][]
// print result
printf("\n A + B : %d x %d \n",m_a
,n_a
); for ( m = 0 ; m < m_a ; m++ )
{
for ( n = 0 ; n < n_a ; n++ )
} // end for
return;
}
// matrix in multiplication
void matrix_multi()
{
int k, C[100][100];
for ( m = 0 ; m < m_a ; m++ )
for ( n = 0 ; n < n_b ; n++)
{
C[m][n]= 0; // start value
for (k = 0; k < n_a ; k++) C[m][n] += A[m][k] * B[k][n]; // assign value to C[][]
} // end for
// print result
printf("\n A . B : %d x %d \n",n_a
,m_b
); for ( m = 0 ; m < m_a ; m++ )
{
for ( n = 0 ; n < n_b ; n++ )
} // end for
return;
}