Translate To Preferred Language

Search ObiokusThoughts

Please Read Today's Featured Post

Alliteration Ere Zeitgeist

Actually ask archaic adult Broadband boy baked bad batch Cold case cant consistently catch Dawn developed dusk do-over Enact emerge...

Template for Matrix Arithmetic in C (some bugs may occur)

#include [stdio.h]
#include [stdlib.h]
#include [string.h]


int main() {
    //create file variables for I/O
    FILE *data = fopen("COSC450_P1_Data.txt", "r");
FILE *output = fopen("COSC450_P1_Output.txt", "w+");

//create variables
signed int input[255];
int length = 0;
int value;
int neg;
int c = 0, d = 0, d1 = 0, m;
int add;

//Check if file exist
if(data == NULL){
   printf("Error reading input file");
   exit(1);
}else{
   //read one integer at a time
   fscanf(data, "%d", &value);
   //while not end of file
   while(!feof (data)){
       //store value in array and continue reading
       input[length] = value;
       length++;
       fscanf(data, "%d", &value);
   }
   fscanf(data, "%d", &value);
   input[length] = value;
 
   fclose(data);
 
   //Create matrix
   int field = length / 5;
   int x[5][field];
   int y[field][5];
 
   long result[5][5];
 
   //loop for one dimension of matrix
   for(int a = 0; a <= field; a++){
       //loop for second dimension of matrix
       for(int b = 0; b < 5; b++){
           neg = 0;
         
              //assign array element to index
              if(input[c] < 0){
                  value = -input[c];
                  neg = 1;
              }else{
                  value = input[c];
              }
              x[b][a] = value;
              //print to file
              fprintf(output, "matrix1[%d][%d] = %d\n", b, a, input[c]);
              //increase index and repeat for second matrix
           
              y[a][b] = value;
              fprintf(output, "matrix2[%d][%d] = %d\n", a, b, input[c]);
              c++;
           
           
           
       }
     
   }
 
   for(int a = 0; a < 5; a++){
       //loop for second dimension of matrix
       for(int b = 0; b < 5; b++){
        for(int c = 0; c <= field; c++){
       //loop for second dimension of matrix
        //create product matrix
              add = add + x[a][c] * y[c][b];
        }
        result[a][b] = add;
        add = 0;
        fprintf(output, "product matrix[%d][%d] = %ld \n\n", a, b,  result[a][b]);
       }
   }
 
   //loop to sort value of product matrix
   for(int e = 0; e < 5; e++){
       for(int m = 0; m < 5; m++){
         
       //assign value to test against array elements
       value = result[e][m];
     
       //secondary loop
       for(int d = e; d < 5; d++ ){
        for(int d1 = m; d1 < 5; d1++){
        //if value is greater begin swap
        if(value > result[d][d1] ){
        value = result[d][d1];
            result[d][d1] = result[e][m];
            result[e][m] = value;
           
           
        }
        //second conditional for column shift
        if(d1 == 0){
        if(result[d][d1] < result[d-1][4]){
        neg = result[d][d1];
        result[d][d1] = result[d-1][4];
        result[d-1][4] = neg;
       
        }
        }
       
        }
       }
       
       }
     
   }
 
 
   //loop to print to file
   for(int f =0; f < 5; f++){
       for(int n = 0; n < 5; n++){
       fprintf(output, "product matrix[%d][%d] = %ld \n", f, n, result[f][n]);
       }
   }
   fclose(output);
 
 
 
 
}

return 0;
}



No comments:

Post a Comment

Thank you for reading.
Please share your thoughts.
Be blessed and enjoy life!