Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that reads a text file (input.txt) and uses a recursive algorith

ID: 3681827 • Letter: W

Question

Write a program that reads a text file (input.txt) and uses a recursive algorithm to compute the determinant of the given matrix. It should read the a order of the matrix, read the matrix, print it out, compute, and print the determinant to an output text file (output.txt). Your program should be able to evaluate multiple matrices on a single execution. Your program should handle matrices up to and including those of order 6. In a real application, the sizes could be much larger. You are required to use an array for this problem. Your solution must be recursive. Incorporate error checking as well.

The input txt file (input.txt) looks like this:

1
5

2
2 3
5 9

3
3 -2 4
-1 5 2
-3 6 4

4
2 4 5 6
0 3 6 9
0 0 9 8
0 0 0 5

4
2 4 5 6
0 0 0 0
0 0 9 8
0 0 0 5

4
2 0 0 0
0 3 0 0
0 0 9 0
0 0 0 5

4
2 4 0 6
1 3 0 0
4 0 0 8
2 5 0 5

6
6 4 6 4 6 4
1 2 3 4 5 6
6 5 4 3 2 1
3 2 3 2 3 2
4 6 4 6 4 6
1 1 1 1 1 1

Explanation / Answer

Program code for recursive algorithm to calculate determinant of a matrix:

int main(int argc, char* argv[])

{

    FILE          *input;

    int           record, i, j;

    int           curr_col;

    const int     dim = DIMENSION;

    double        entries[dim][dim];

    double        tmp, determinant;

    const char    inp_fn[]="matrix.data";

    /* Open file */

    input = fopen(inp_fn, "r");

    /* Check the pointer to file are not NULL */

    if(input != (FILE*) NULL)

    {

record = 0;

// Read the file at most (dim * dim) times to fill up the array

// The reading also stops when it cannot read any double number

while(fscanf(input,"%lf",&tmp) == 1 && record < dim * dim)

{

    // Use some math to calculate the cell to put the new entry

    entries[record / dim][record % dim] = tmp; // entries and tmp are double, no need for casting

    record++;

}

// Close the file after done reading

fclose(input);

    }

    else

        printf("*** Could not open input or output file! *** ");

    /* Calculates determinant */

    determinant = det(dim, entries);

    printf(" A = ");

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

    {

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

        {

            printf("%.1lf ", entries[i][j]);

        }

        printf(" ");

    }

    printf(" ");

    printf("det(A) = %.3lf ", determinant);

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote