Does not contain a static 'Main' method suitable for an entry poin - C#
Формулировка задачи:
Хелп! Помогите студенту!
Сижу уже битый час, не пойму в чём дело. При компиляции, выдаёт ошибку:
does not contain a static 'Main' method suitable for an entry point ConsoleApplication4
Помогите сделать проект, ибо я уже пошел за валидолом
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication4 { public class Matrix { public float[,] matrix = null; // хранение данных public int CountColumn { get; private set; } // количество столбцов public int CountRow { get; private set; } // количество строк public Matrix(int x = 1, int y = 1, bool autoGeneration = true, int startGen = 1) // конструктор с параметрами { if (autoGeneration) generator(x, y, startGen); else matrix = new float[x, y]; CountColumn = y; CountRow = x; } public float this[int x, int y] // получить элемент по индексам { get { return matrix[x, y]; } set { matrix[x, y] = value; } } public static Matrix operator +(Matrix x1, Matrix x2) // для сложения матриц { if (x1.CountRow != x2.CountRow || x1.CountColumn != x2.CountColumn) throw new ArgumentException("Несоответствующие матрицы"); Matrix ret = new Matrix(x1.CountRow, x1.CountColumn, false); // новая матрица for (int i = 0; i < x1.CountRow; i++) for (int j = 0; j < x1.CountColumn; j++) { ret[i, j] = x1[i, j] + x2[i, j]; // сложение } return ret; } public static Matrix operator +(Matrix x1, int x2) // сложения матрицы и числа { Matrix ret = new Matrix(x1.CountRow, x1.CountColumn, false); for (int i = 0; i < x1.CountRow; i++) for (int j = 0; j < x1.CountColumn; j++) { ret[i, j] = x1[i, j] + x2; } return ret; } public static Matrix operator -(Matrix x1, Matrix x2) // для вычитания матриц { if (x1.CountRow != x2.CountRow || x1.CountColumn != x2.CountColumn) throw new ArgumentException("Несоответствующие матрицы"); Matrix ret = new Matrix(x1.CountRow, x1.CountColumn, false); for (int i = 0; i < x1.CountRow; i++) for (int j = 0; j < x1.CountColumn; j++) { ret[i, j] = x1[i, j] - x2[i, j]; // вычитаем из каждого элемента соответствующий } return ret; } public static Matrix operator -(Matrix x1, int x2) // вычитание числа из матрицы { Matrix ret = new Matrix(x1.CountRow, x1.CountColumn, false); for (int i = 0; i < x1.CountRow; i++) for (int j = 0; j < x1.CountColumn; j++) { ret[i, j] = x1[i, j] - x2; // вычитаем из каждого числа } return ret; } public static bool operator ==(Matrix x1, Matrix x2) // оператор на равенство { if (x1.CountColumn != x2.CountColumn || x1.CountRow != x2.CountRow) return false; for (int i = 0; i < x1.CountRow; i++) for (int j = 0; j < x1.CountColumn; j++) { if (x1[i, j] != x2[i, j]) // сравниваем каждый элемент return false; } return true; } public static bool operator !=(Matrix x1, Matrix x2)// оператор на неравенство { return (!(x1 == x2)); } public Matrix Inverse() // получение обратной матрицы { if (CountRow != CountColumn) throw new ArgumentException("Обратная матрица существует только для квадратных, невырожденных, матриц."); Matrix matrix = new Matrix(CountRow, CountColumn); //Делаем копию исходной матрицы float determinant = this.Determinant(); // вычисление определителя if (determinant == 0) return matrix; //Если определитель == 0 - матрица вырожденная for (int i = 0; i < CountColumn; i++) { for (int t = 0; t < CountRow; t++) { Matrix tmp = this.Exclude(i, t); //получаем матрицу без строки i и столбца t matrix[t, i] = tmp.Determinant() / determinant; if (((i + t) % 2) == 1) { matrix[t, i] *= -1; // меняем знак } } } return matrix; } public Matrix Transpose() // транспонирование матрицы { Matrix ret = new Matrix(CountColumn, CountRow, false); for (int i = 0; i < ret.CountRow; i++) for (int j = 0; j < ret.CountColumn; j++) { ret[i, j] = this[j, i]; // просто меням строку со столбцом } return ret; } public float Determinant() // вычисление определителя { if (this.CountRow == 1)// простейший случай для 1*1 return this[0, 0]; if (this.CountRow == 2) // простейший случай для 2*2 { return this[0, 0] * this[1, 1] - this[0, 1] * this[1, 0]; } float sign = 1, result = 0; for (int i = 0; i < CountColumn; i++) { Matrix minor = GetMinor(this, i); result += sign * this[0, i] * minor.Determinant(); sign = -sign; } return result; } private Matrix GetMinor(Matrix matrix, int n)// получение минора по определению { Matrix result = new Matrix(matrix.CountRow - 1, matrix.CountRow - 1); // создаем матрицу с (row-1) * (column-1) for (int i = 1; i < matrix.CountRow; i++) { for (int j = 0, col = 0; j < matrix.CountColumn; j++) { if (j == n) continue; result[i - 1, col] = matrix[i, j]; col++; }// копируем элементы } return result; } public static Matrix operator *(Matrix x1, Matrix x2) // произведение матриц по определению, для проверки обратной матрицы { if (x1.CountColumn != x2.CountRow) throw new ArgumentException("Число столбцов матрицы А не равно числу строк матрицы В."); Matrix ret = new Matrix(x1.CountRow, x2.CountColumn, false); for (int i = 0; i < x1.CountRow; i++) for (int j = 0; j < x2.CountColumn; j++) { ret[i, j] = 0; for (int k = 0; k < x2.CountRow; k++) ret[i, j] += x1[i, k] * x2[k, j]; } return ret; } public Matrix Exclude(int row, int column) // получить матрицу без строки row и столбца column { if (row > CountRow || column > CountColumn) throw new IndexOutOfRangeException("Строка или столбец не принадлежат матрице."); Matrix ret = new Matrix(CountRow - 1, CountColumn - 1, false); ret.matrix = (float[,])this.matrix.Clone(); int offsetX = 0; for (int i = 0; i < CountRow; i++) { int offsetY = 0; if (i == row) { offsetX++; continue; } for (int t = 0; t < CountColumn; t++) { if (t == column) { offsetY++; continue; } ret[i - offsetX, t - offsetY] = this[i, t]; } } return ret; } public override string ToString() // текстовый вид матрицы для вывода { StringBuilder ret = new StringBuilder(); if (matrix == null) return ret.ToString(); for (int i = 0; i < CountRow; i++) { for (int t = 0; t < CountColumn; t++) { ret.Append(Math.Round(matrix[i, t], 3)); ret.Append("\t"); } ret.Append("\n"); } return ret.ToString(); } void generator(int x, int y, int startGen) // для генерации случайного массива { matrix = new float[x, y]; Random rnd = new Random(startGen); for (int i = 0; i < x * y; i++) { int X = i / y; int Y = i - y * X; matrix[X, Y] = rnd.Next(-10, 10); } } } }
Решение задачи: «Does not contain a static 'Main' method suitable for an entry poin»
textual
Листинг программы
namespace ConsoleApplication7 { class Program { static void Main(string[] args) { // Отсюда начнет работу твоя программа. Matrix matrix1 = new Matrix(); // создаем ЭКЗЕМПЛЯР класса. // Работаем. } } // Это класс. Он сам по себе не исполняется. Чтобы он заработал, нужно создать его экземпляр. public class Matrix { public float[,] matrix = null; // хранение данных public int CountColumn { get; private set; } // количество столбцов public int CountRow { get; private set; } // количество строк // и так далее
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д