Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

OpenFileDialog1 - для считывания строк из файла

Читайте также:
  1. A.6.2 Командная строка и команды
  2. A.6.5 Фильтры в командных файлах.
  3. Во-вторых, из переменной среды можно выделять подстроки с помощью конструкции
  4. Во-вторых, из переменной среды можно выделять подстроки с помощью конструкции
  5. Во-вторых, из переменной среды можно выделять подстроки с помощью конструкции
  6. Во-вторых, из переменной среды можно выделять подстроки с помощью конструкции

ЗАДАНИЕ 3 Матрицы

Постановка задачи

Составить программу, которая считывает матрицы из файлов, представляет их в виде таблицы на форме, вычисляет заданное матричное выражение и для выбранной пользователем матрицы вычисляет определитель.

Содержание отчета

1. Постановка задачи для конкретного варианта.

2. Текст клиентского кода программы и графический дизайн форм.

3. Результаты выполнения программы.

Пример программы, вычисляющей матрицу и ее определитель:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

 

namespace Матрицы

{

public partial class Form1: Form

{

//String[] St;

//Класс List<string> - коллекция строк - лист из строк имеет методы

//накопления и преобразования неопределенного количества элементов

List<string> list_st = new List<string>();

string[] St;

Double[,] MatrD, MatrA, MatrB, MatrC, Matr1, Matr2;

 

 

int i = 0, j = 0, n = 0;

public Form1()

{

InitializeComponent();

 

}

 

//Процедура считывания строк из файла

private void Sc(ref Double[,] Matr)

{

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = openFileDialog1.OpenFile() as FileStream;

StreamReader SR = new StreamReader(FS);

 

dataGridView1.Rows.Clear();

 

//добавление первой колонки

DataGridViewTextBoxColumn titleColumn = new DataGridViewTextBoxColumn();

//Изменение заголовка колонки

titleColumn.HeaderText = "Titlt" + 1.ToString();

//Выравнивание ширины колонки в соответствии с заданным стилем - AllCells

titleColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

//добавление

dataGridView1.Columns.Add(titleColumn);

 

 

list_st.Clear();

while (SR.Peek() > 0)

{ // Считывание строки и добавление колонки (свойство AllowUserToAddRows - False)

list_st.Add(SR.ReadLine());

//dataGridView1

dataGridView1.Rows.Add();

}

St = list_st.ToArray();

n = St.Length;

Matr = new Double[n, n];

for (i = 0; i < n - 1; i++)

{ // Добавление колонки

DataGridViewTextBoxColumn titleColumn1 = new DataGridViewTextBoxColumn();

titleColumn1.HeaderText = "Titlt" + (i + 2).ToString();

//Выравнивание ширины колонки в соответствии с заданным стилем - AllCells

titleColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dataGridView1.Columns.Add(titleColumn1);

}

 

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

{

 

St[i] = St[i].Replace(".", ",");;

//Разбиение строки St на подстроки aa

string[] aa = St[i].Split(" \t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

 

 

for (j = 0; j < aa.Length; j++)

{

//Заполнение матрицы и таблицы

Matr[i, j] = Convert.ToDouble(aa[j]);

dataGridView1.Rows[i].Cells[j].Value = Matr[i, j];

}

}

 

SR.Close();

FS.Close();

}

}

 

 

private void button1_Click(object sender, EventArgs e)

{ //Матрица A

dataGridView1.Columns.Clear();

Sc(ref MatrA);

}

 

private void button2_Click(object sender, EventArgs e)

{ //Матрица B

dataGridView1.Columns.Clear();

Sc(ref MatrB);

}

 

private void button3_Click(object sender, EventArgs e)

{ //Матрица C

dataGridView1.Columns.Clear();

Sc(ref MatrC);

}

 

private void button4_Click(object sender, EventArgs e)

{ //Матрица (A+B)*C

if ((dataGridView1.Columns.Count < 1) || MatrA == null || MatrB == null || MatrC == null) return;

dataGridView1.Columns.Clear();

//добавление первой колонки

DataGridViewTextBoxColumn titleColumn = new DataGridViewTextBoxColumn();

titleColumn.HeaderText = "Titlt" + 1.ToString();

titleColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dataGridView1.Columns.Add(titleColumn);

for (int i = 0; i < n - 1; i++)

{ // Добавление колонки

//dataGridView1.Rows.Clear();

DataGridViewTextBoxColumn titleColumn1 = new DataGridViewTextBoxColumn();

titleColumn1.HeaderText = "Titlt" + (i + 2).ToString();

titleColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dataGridView1.Columns.Add(titleColumn1);

}

MatrD = new Double[n, n];

Matr1 = new Double[n, n];

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

{

dataGridView1.Rows.Add();

}

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

{

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

{

Matr1[i, j] = MatrA[i, j] + MatrB[i, j];

}

}

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

{

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

{

MatrD[i, j] = 0;

for (int k = 0; k < n; k++)

MatrD[i, j] = MatrD[i, j] + Matr1[i, k] * MatrC[k, j];

dataGridView1.Rows[i].Cells[j].Value = MatrD[i, j];

 

}

}

}

 

private void button5_Click(object sender, EventArgs e)

{ // Заполнение второй таблицы

//dataGridView2 = dataGridView1;

//dataGridView1.Rows.Clear();

if (dataGridView1.Columns.Count < 1) return;

dataGridView2.Columns.Clear();

//добавление первой колонки и первой строки

DataGridViewTextBoxColumn titleColumn = new DataGridViewTextBoxColumn();

titleColumn.HeaderText = "Titlt" + 1.ToString();

titleColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dataGridView2.Columns.Add(titleColumn);

dataGridView2.Rows.Add();

for (int i = 0; i < n - 1; i++)

{ // Добавление колонки

//dataGridView1.Rows.Clear();

DataGridViewTextBoxColumn titleColumn1 = new DataGridViewTextBoxColumn();

titleColumn1.HeaderText = "Titlt" + (i + 2).ToString();

titleColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

dataGridView2.Columns.Add(titleColumn1);

// добавление строки

dataGridView2.Rows.Add();

}

// Создание матрицы из второй таблицы

Matr2 = new Double[n, n];

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

{

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

{

dataGridView2.Rows[i].Cells[j].Value = dataGridView1.Rows[i].Cells[j].Value;

Matr2[i, j] = Convert.ToDouble(dataGridView2.Rows[i].Cells[j].Value);

}

}

}

 

private void button6_Click(object sender, EventArgs e)

{

//Вычисление определителя

textBox1.Clear();

double S = Opred(Matr2, n);

textBox1.Text = "Определитель равен " + Convert.ToString(S);

 

}

//Функция вычисления определителя

double Opred(double[,] M, int m)

{

 

if (M == null)

return 0;

 

 

Double[,] M2;

M2 = new double[m - 1, m - 1];

 

int i1 = 0, j1 = 0, k = 0, i = 0, j = 0;

double Opr = 0;

 

//Тривиальное решение

if (m == 1)

{

return Opr = M[0, 0];

}

 

 

for (k = 0; k < m; k++)

{//Разложение по элементам нулевой строки

i1 = 0;

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

{

j1 = 0;

if (i!= 0) //вычеркивание нулевой строки

{

 

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

{

if (j!= k) //вычеркивание k-го стролбца

{

 

M2[i1, j1] = M[i, j];

j1++;

}

}

i1++;

}

}

// Рекурсивное обращение

Opr = Opr + Math.Pow(-1, k) * M[0, k] * Opred(M2, m - 1);

}

 

return Opr;

 

}

 

private void button7_Click(object sender, EventArgs e)

{

Close();

}

}

}

Варианты заданий вычисления матричного выражения и определителя матрицы

1. ;

2. ;

3. ;

4. ;

5. ;

6. ;

7. ;

8. ;

9. ;

10. ;

11. ;

12. ;

13.

14.

15.

16.

17.

В которых:

; ;

;

 

openFileDialog1 - для считывания строк из файла


Дата добавления: 2015-08-27; просмотров: 59 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Текст клиентского кода (программы)| Предпроектные исследования

mybiblioteka.su - 2015-2024 год. (0.02 сек.)