Код:
using System
using System.ComponentModel
using System.Drawing
using System.Text
using System.Windows.Forms
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent()
TextBox[,] t
Label[,] l
int n
int m
int shag
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedItem == null || comboBox2.SelectedItem == null)
{
MessageBox.Show("Ошибка!\nЗадайте значение входных параметров")
return
}
n = Convert.ToInt32(comboBox1.SelectedItem.ToString())
m = Convert.ToInt32(comboBox2.SelectedItem.ToString())
m += 1
int i, j, c, d
int x = 18, y = 25
if (t != null)
{
tabPage2.Controls.Clear()
tabPage2.Controls.Add(button2)
}
t = new TextBox[n, m]
for (i = 0
{
for (j = 0
{t[i, j] = new TextBox()
tabPage2.Controls.Add(t[i, j])
t[i, j].Location = new Point(x += 50, y)
t[i, j].Size = new Size(25, 20)
t[i, j].TabStop = false
}
y += 40
x = 18
}
y = 28
x = 45
l = new Label[n, m]
for (c = 0
{
for (d = 0
{
l[c, d] = new Label()
tabPage2.Controls.Add(l[c, d])
l[c, d].Location = new Point(x += 50, y)
l[c, d].Size = new Size(40, 40)
int z = d + 1
if (d == m - 2)
l[c, d].Text = "x" + z + " ="
else
l[c, d].Text = "x" + z + " +"
l[c, d].TabStop = false
}
y += 41
x = 45
}
tabControl1.SelectedTab = tabPage2
}
public string Gauss(int Rows, int Column, double[,] matr)
{int i, k, q
double v
string answer = ""
for (q = 0
{
//делаем главную диагональ единицами
v = matr[q, q]
richTextBox1.AppendText("\nШаг" + (shag++) + ". Разделим строку " + (q + 1) + " на элемент[" + (q + 1) + "," + (q + 1) +
"]= " + matr[q, q] + "\n\n")
for (k = 0
matr[q, k] /= v
for(int z=0
//Записываем результат со 2-го шага
{
for(int x=0
{
richTextBox1.AppendText((Convert.ToString(matr[z, x])).PadRight(2) + " ")
}
richTextBox1.AppendText("\n\n")
}
for (i = q + 1
числа под единицами главной диогoнали
{
v = matr[i, q]
for (k = q
{
matr[i, k] = matr[i, k] - matr[q, k] * v
//Отнимаем от строки строку, помноженную на элемент
}richTextBox1.AppendText("\nШаг" + (shag++) + ".
Отнимем от строки " + (i + 1) + " строку " + (q + 1) + " умноженную на
число " + v + "\n\n")
for (int z = 0
//Записываем результат
{
for (int x = 0
{
richTextBox1.AppendText((Convert.ToString(matr[z, x])).PadRight(2) + " ")
}
richTextBox1.AppendText("\n\n")
}
}
}
for (q = 0
{
for (i = 0
{
v = matr[i, (Column - 1) - q - 1]
for (k = Column - 1 - q - 1
matr[i, k] = matr[i, k] - matr[(Rows - 1) - q,
k] * v
richTextBox1.AppendText("\nШаг" + (shag++) + ".
Отнимем от строки " + (i + 1) + " строку " + (Rows - q) + ", умноженную на число " + v + "\n\n")
for (int z = 0
//Записываем результат
{
for (int x = 0
{
richTextBox1.AppendText((Convert.ToString(matr[z, x])).PadRight(2) + " ")
richTextBox1.AppendText("\n\n")
}
}
}
richTextBox1.AppendText("Результатом, будут оставшийся
столбец чисел\n\n")
for (i = 0
answer += "x" + (i+1) + " = " + matr[i, Column - 1] +
"\r\n"
return answer
}
private void button2_Click(object sender, EventArgs e)
{
shag = 2
int i, j
richTextBox1.Clear()
string[,] v = new string[n, m]
double[,] v1 = new double[n, m]
for (i = 0
for (j = 0
{
v1[i, j] = Convert.ToDouble(t[i, j].Text)
v[i, j] = Convert.ToString(t[i, j].Text)
}
richTextBox1.AppendText("Задача :\nНайти решение системы
уравнений :\n")
for (i = 0
{
string s = ""
for (j = 0
{
if (t[i, j].Text == ""){
MessageBox.Show("Были введенны не все коэффициенты")
return
}
if (j == m - 1)
s += v[i, j]
else
{
int z = j + 1
if (v1[i, j] < 0)
s += v[i, j] + " * x" + z + " - "
if (v1[i, j] == 0)
s += " "
if (j == m - 2)
{
s += v[i, j] + " * x" + z + " = "
continue
}
if (v1[i, j] > 0)
s += v[i, j] + " * x" + z + " + "
}
}
richTextBox1.AppendText(s + "\n")
}
richTextBox1.AppendText("Шаг 1:\nСформируем расширенную
матрицу :\n\r")
for (i = 0
{
string s = ""
for (j = 0
{
if (j == m - 1)
s += " " + (v[i, j]).PadRight(2)
else
s += (v[i, j].PadRight(3)) + " "
}
richTextBox1.AppendText(s + "\n")
}
richTextBox1.AppendText("Применяя к расширенной матрице
последовательность элементарных операций, стремимся, чтобы каждая
строка, кроме, быть может, первой, начиналась с нулей, и число нулей
до первого ненулевого элемента в каждой следующей строке было больше,
чем в предыдущей.\n")
richTextBox1.AppendText(Gauss(n, m, v1))
tabControl1.SelectedTab = tabPage4
}
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if ((n == 0) || (m == 0))
{
e.Cancel = true
MessageBox.Show("Вы не сформировали СЛАУ")
}
}
}