C# unhandled error: "Index was outside the bounds of the array" -
using system; using system.collections.generic; namespace matrix_algebra { public struct s_matrix_size { public int size_r, size_c; public s_matrix_size(int r, int c) { this.size_r = r; this.size_c = c; } } public class c_matrix_entries { private s_matrix_size _size; private double[,] _entry; public c_matrix_entries() { int r, c; console.writeline("enter number of rows , columns "); r = convert.toint32(console.readline()); c = convert.toint32(console.readline()); _size = new s_matrix_size(r, c); _entry = new double [_size.size_r,_size.size_c]; console.writeline("enter entries first row [left right] last row "); (int = 0; i<_size.size_r; i++) { console.writeline("enter {0} row", + 1); (int j = 0; j<_size.size_c;j++) { _entry[i, j] = convert.todouble(console.readline()); } } } public s_matrix_size size { { return _size; } } //property public double[,] entry { { return _entry; } } } } namespace matrix_process_algebra { using matrix_algebra; public class starthere { static void main() // main { c_matrix_entries matrix = new c_matrix_entries(); if (matrix.size.size_c == matrix.size.size_r) { if (matrix.size.size_c == 2) { console.writeline("determinant of matrix? "); console.writeline("yes <y> or no <n> ?"); switch (console.readline()) { case "n": case "no": case "n": case "no": case "no": console.writeline("goodbye!!"); break; case "yes": case "y": case "y": case "yes": console.writeline("the determinant of entered matrix "); sqr_determinant process_2x2 = new sqr_determinant(); double result = process_2x2.sqr_determinant_2x2(matrix.entry); console.write(result); console.readline(); break; } } if (matrix.size.size_c == 3) { console.writeline("determinant of matrix? "); console.writeline("yes <y> or no <n> ?"); switch (console.readline()) { case "n": case "no": case "n": case "no": case "no": console.writeline("goodbye!!"); break; case "yes": case "y": case "y": case "yes": console.writeline("the determinant of entered matrix "); sqr_determinant process_3x3 = new sqr_determinant(); double result = process_3x3.sqr_determinant_3x3(matrix.entry); console.write(result); console.readline(); break; } } if (matrix.size.size_c == 4) { console.writeline("determinant of matrix? "); console.writeline("yes <y> or no <n> ?"); switch (console.readline()) { case "n": case "no": case "n": case "no": case "no": console.writeline("goodbye!!"); break; case "yes": case "y": case "y": case "yes": console.writeline("the determinant of entered matrix "); sqr_determinant process_4x4 = new sqr_determinant(); double result = process_4x4.sqr_determinant_4x4(matrix.entry); console.write(result); console.readline(); break; } } } } } public class sqr_determinant { public class c_sqr_matrix_3x3 //matrix 3x3 { private double[,] _entries = new double[3, 3]; public c_sqr_matrix_3x3(double a,double b,double c,double d,double e,double f,double g,double h,double i) { this._entries[1, 1] = a; this._entries[1, 2] = b; this._entries[1, 3] = c; this._entries[2, 1] = d; this._entries[2, 2] = e; this._entries[2, 3] = f; this._entries[3, 1] = g; this._entries[3, 2] = h; this._entries[3, 3] = i; } public double[,] entries { { return _entries; } } } public class c_sqr_matrix_2x2 //matrix 2x2 { private double[,] _entries = new double[2,2]; public c_sqr_matrix_2x2(double a,double b, double c, double d) { this._entries[0, 0] = a; this._entries[0, 1] = b; this._entries[1, 0] = c; this._entries[1, 1] = d; } public double[,] entries { { return _entries; } } } public double sqr_determinant_2x2(double[,] entry) //determinant 2x2 { return entry[0, 0] * entry[1, 1] - entry[0, 1] * entry[1, 0]; } public double sqr_determinant_3x3(double[,] entry) //determinant 3x3 { c_sqr_matrix_2x2 _2233 = new c_sqr_matrix_2x2(entry[1,1],entry[1,2],entry[2,1],entry[2,2]); c_sqr_matrix_2x2 _1133 = new c_sqr_matrix_2x2(entry[0,1],entry[0,2],entry[2,1],entry[2,2]); c_sqr_matrix_2x2 _1122 = new c_sqr_matrix_2x2(entry[0,1],entry[0,2],entry[1,1],entry[1,2]); return entry[0, 0] * sqr_determinant_2x2(_2233.entries) - entry[1, 0] * sqr_determinant_2x2(_1133.entries) + entry[2, 0] * sqr_determinant_2x2(_1122.entries); } public double sqr_determinant_4x4(double[,] entry) { c_sqr_matrix_3x3 _2244 = new c_sqr_matrix_3x3(entry[1, 1], entry[1, 2], entry[1, 3], entry[2, 1], entry[2, 2], entry[2, 3], entry[3, 1], entry[3, 2], entry[3, 3]); c_sqr_matrix_3x3 _1144 = new c_sqr_matrix_3x3(entry[0, 1], entry[0, 2], entry[0, 3], entry[2, 1], entry[2, 2], entry[2, 3], entry[3, 1], entry[3, 2], entry[3, 3]); c_sqr_matrix_3x3 _1144_ = new c_sqr_matrix_3x3(entry[0, 1], entry[0, 2], entry[0, 3], entry[1, 1], entry[1, 2], entry[1, 3], entry[3, 1], entry[3, 2], entry[3, 3]); c_sqr_matrix_3x3 _1133 = new c_sqr_matrix_3x3(entry[0, 1], entry[0, 2], entry[0, 3], entry[1, 1], entry[1, 2], entry[1, 3], entry[2, 1], entry[2, 2], entry[2, 3]); return entry[0, 0] * sqr_determinant_3x3(_2244.entries) - entry[1, 0] * sqr_determinant_3x3(_1144.entries) + entry[2, 0] * sqr_determinant_3x3(_1144_.entries) - entry[3, 0] * sqr_determinant_3x3(_1133.entries); } } } i tried debug , find error still cannot find error.
your constructor c_sqr_matrix_3x3 1 of issues. arrays zero-indexed. see other lines you're treating object 1-indexed.
public c_sqr_matrix_3x3(double a,double b,double c,double d,double e,double f,double g,double h,double i) { this._entries[1, 1] = a; this._entries[1, 2] = b; this._entries[1, 3] = c; this._entries[2, 1] = d; this._entries[2, 2] = e; this._entries[2, 3] = f; this._entries[3, 1] = g; this._entries[3, 2] = h; this._entries[3, 3] = i; } should be
public c_sqr_matrix_3x3(double a,double b,double c,double d,double e,double f,double g,double h,double i) { this._entries[0, 0] = a; this._entries[0, 1] = b; this._entries[0, 2] = c; this._entries[1, 0] = d; this._entries[1, 1] = e; this._entries[1, 2] = f; this._entries[2, 0] = g; this._entries[2, 1] = h; this._entries[2, 2] = i; }
Comments
Post a Comment