Program 1: Computing determinants of matrices
Computing determinants of matrices is a key part of several matrix operations, among them is one way to compute the inverse of a matrix. Computing the determinant of an n x n matrix can easily be expressed recursively. Before seeing how, we need a definition.
A submatrix of an n x n matrix is a matrix of size (n-1) x (n-1) created by removing one row and one column from the original n x n matrix. We will use the notation Sr,c(M) to denote the submatrix created by removing row r and column c of M. For example, given the matrix, M:
10 11 12 13
20 21 22 23
30 31 32 33
40 41 42 43
the matrix S1,2(M) would be:
10 11 13
30 31 33
40 41 43
Recursive algorithm for computing the determinant
Base Case: The determinant of a 2x2 matrix, M, is a single floating point number:
M*M - M*M
Recursive expression: The determinant of an n x n matrix M (n > 2) – written as det(M) – can be defined recursively as:
det(M) = M*det(S0,0(M)) - M*det(S0,1(M)) + M*det(S0,2(M)) ... M[n-1]*det(S0,n-1(M))
Notice the alternating signs in the two equivalent expressions above.
Create a class Matrix to represent a square matrix of double precision floating point numbers that includes the following public methods:
class Matrix // always a square matrix
Matrix(std::istream& inp, int n); // Create storage for n x n matrix and read its n*n values from "inp"
Matrix(const Matrix& M, int r, int c); // Create Sr,c(M); if M is nxn, the new matrix will be (n-1)x(n-1)
double det() const; // implement the recursive algorithm outlined above
Storage for each Matrix instance must be dynamically allocated and be of exactly the size needed. You will recall that there are (at least) two very different ways to do this. In one case, the Matrix elements will be stored in a structure whose base pointer is of type "double*"; in the other, the base type will be "double**".
Development and Testing
Your program is to open the file whose name is in argv. Assuming the std::ifstream variable connected to this file is inFile, the Executive will loop doing the following:
while (inFile >> n)
Matrix M(inFile, n);
// ... print the matrix with appropriate formatting. Do so either by overloading
// operator<< for class Matrix, or write and use a Matrix print method
double determinant = [login to view URL]();
// print the determinant with appropriate label and formatting
There will be more than one matrix on the file. Data will be read in row-major order, starting with row 0. A set of data for one such matrix in a file will be read as:
n m00 … m0(n-1) … m(n-1)0 … m(n-1)(n-1)
As indicated in the code above, the "n" will be read by the Executive; the matrix itself will be read by the Matrix constructor.
Program 2: Driving a tank through electric fields
This program will be to develop a recursive backtracking solution to solve the problem illustrated and explained in the image on the right. Your program will read the description of an electric field from a file. The first two numbers in the file are the number of rows and columns in the grid. The remainder of the file will contain the (nRows * nCols) non-blank characters as indicated in the figure on the right. There must be exactly one 'S' and exactly one 'E'.
9 freelanceria on tarjonnut keskimäärin 42$ tähän työhön
Hello there, I can do coding in C++, C# using OOP ,Data Structures .If it is an assignment then I will do coding in easiest manner. Please reply for further details if u consider my proposal Thanks.