русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

лабораторной работе № 4


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


Технологии программирования

 

Отчёт по

Классы языка С++ (C#)

 

Выполнили: студенты 3-го курса гр. 250201: Эди О., Лебедев К., Левичев В., Возвышаева Н.

 

Руководитель работы: Новиков Александр Сергеевич,

Доцент, Кафедра Электронно-вычислительных машин

 

Тула 2013 год

 

Цели и задачи работы:

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

2) Разработать класс, позволяющий выполнять действия над матрицами произвольных размерностей (сложение, вычитание, умножение, транспонирование). Интерфейс класса должен включать перегруженные операторы.

 

Для реализации поставленной задачи был использован объектно-ориентированный язык программирования С#. Среда разработки программы MS Visual Studio 2010.

 

Внешний вид приложения:

 

 

Листинг программы:

Первый файл Matrix.cs представляет собой класс, содержащий методы для операций с матрицами. Содержит конструктор, деструкторы встроены. Содержит индексатор, позволяющий создать класс со свойствами массива.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Class_Matrix

{

class Matrix

{

int N; // Размерность матрицы.

double[,] matrix_1; // 2x Массив (x,x)

double t = 0; // Эта перем. будет исп. в циклах.

 

public double this[int i, int j] // Индексатор типа int в классе. Индексаторы позволяют индексировать экземпляры класса или структуры так же, как массивы. Индексаторы напоминают свойства, но их методы доступа принимают параметры.



{

get { return matrix_1[i,j];} // Возвр. зн-е, наход. по указ. индексу.

set { matrix_1[i, j] = value; } // Установка значения, которое определяет индекс.

}

 

 

public Matrix(int N) // Конструктор задаёт начальные параметры для матрицы.

{

this.N = N;

this.matrix_1 = new double[N,N]; // Задали матрицу (двумерный массив).

}

 

 

public void CreateMatrix(int randSeed) // Создаём матрицу. randSeed задаёт сл.число.

{

Random rand = new Random(randSeed);

for (int i = 0; i < N; ++i)

{

for (int j = 0; j < N; ++j)

{

double randNum = rand.Next(0, 100);

matrix_1[i, j] = randNum;

}

}

}

 

public void CreateDiagMatrix() // Создаём диагональную матрицу.

{

Console.WriteLine("Создадим диагональную матрицу:");

for (int i = 0; i < N; ++i)

{

for (int j = 0; j < N; ++j)

{

matrix_1[i, j] = 0;

if (i == j)

{

matrix_1[i, j] = 8;

}

}

}

WriteMatrix();

Console.WriteLine();

}

 

public void WriteMatrix() // Отображаем матрицу.

{

for (int i = 0; i < N; ++i)

{

for (int j = 0; j < N; ++j)

{

Console.Write("{0}\t",matrix_1[i, j]); // Спецификатор отобр. первый параметр + таблица.

}

Console.WriteLine();

}

}

 

public static Matrix operator +(Matrix A, Matrix B)// Перегружаем оператор +.

{

Matrix C = new Matrix(A.N); // Новая матрица для результата.

 

for (int i = 0; i < A.N; ++i)

{

for (int j = 0; j < A.N; ++j)

{

C[i, j] = A[i, j] + B[i, j];

}

}

Console.Write("{0} \n", "Результат сложения двух матриц:");

return C; // Оператор возвращает треб. значение.

}

 

public static Matrix operator -(Matrix A, Matrix B)// Перегружаем оператор -.

{

Matrix R = new Matrix(A.N); // Новая матрица для результата.

 

for (int i = 0; i < A.N; ++i)

{

for (int j = 0; j < A.N; ++j)

{

R[i, j] = A[i, j] - B[i, j];

}

}

Console.Write("{0} \n", "Результат вычитания двух матриц:");

return R; // Оператор возвращает треб. значение.

}

 

 

public static Matrix operator *(Matrix A, Matrix B)// Перегружаем оператор *. Матрица*Матрица.

{

Matrix U = new Matrix(A.N); // Новая матрица для результата.

 

for (int i = 0; i < A.N; ++i)

{

for (int j = 0; j < A.N; ++j)

{

for (int m = 0; m < A.N; ++m)

{

U[i, j] += A[i, m] * B[m, j];

}

}

}

Console.Write("{0} \n", "Результат умножения двух матриц:");

return U; // Оператор возвращает треб. значение.

}

public static Matrix operator *(Matrix A, double digit) // Перегружаем оператор *. Матрица*Число.

{

Matrix MDigit = new Matrix(A.N);

for (int i = 0; i < A.N; i++)

{

for (int j = 0; j < A.N; j++)

{

MDigit[i, j] = A[i, j] * digit ;

}

}

Console.Write("{0} \n", "Результат умножения матрицы на число:");

return MDigit;

}

int flag = 0;

public void CheckNull() // Нулевая?

{

for (int i = 0; i < N; i++)

{

for (int j = 0; j < N; j++)

{

if (matrix_1[i, j] == 0)

t = t + 1;

}

}

if (t == N * N)

{

flag = 1;

Console.WriteLine("{0}\n", "Исследуемая матрица нулевая.");

}

else Console.WriteLine("{0}\n", "Исследуемая матрица не нулевая.");

}

 

// Транспорируем матрицу.

public void Trans()

{

if (flag == 0)

{

double tmp = 0;

Console.WriteLine("{0}\n", "Матрица №1 после транспорирования:");

for (int i = 0; i < N; i++)

{

for (int j = 0; j < i; j++)

{

tmp = matrix_1[i, j];

matrix_1[i, j] = matrix_1[j, i];

matrix_1[j, i] = tmp;

}

}

WriteMatrix();

Console.WriteLine();

}

else

{

Console.ForegroundColor = ConsoleColor.Yellow;

Console.WriteLine("Транспорирование нецелесообразно, т.к. матрица нулевая.");

Console.ForegroundColor = ConsoleColor.White;

}

}

}

}

Второй файл Programm.cs – основной программный модуль проекта. Обеспечивает вызов методов класса.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Class_Matrix;

using System.Messaging;

 

namespace Class_Matrix

{

class Program

{

static void Main(string[] args)

{ // Матрица 1 и 2.

const int size = 3;

Console.ForegroundColor = ConsoleColor.Green;

Console.WriteLine("Матрица №1:");

Console.ForegroundColor = ConsoleColor.Gray;

Matrix Matrix1 = new Matrix(size);

Matrix1.CreateMatrix(88);

Matrix1.WriteMatrix();

 

Console.WriteLine();

Console.ForegroundColor = ConsoleColor.Red;

Console.WriteLine("Матрица №2:");

Console.ForegroundColor = ConsoleColor.Gray;

Matrix Matrix2 = new Matrix(size);

Matrix2.CreateMatrix(77);

Matrix2.WriteMatrix();

 

Console.WriteLine();

// Сложение.

Matrix Matrix3 = new Matrix(size);

Matrix3 = Matrix1 + Matrix2;

Matrix3.WriteMatrix();

 

Console.WriteLine();

// Вычитание.

Matrix Matrix4 = new Matrix(size);

Matrix4 = Matrix1 - Matrix2;

Matrix4.WriteMatrix();

 

Console.WriteLine();

// Умножение М * М.

Matrix Matrix5 = new Matrix(size);

Matrix5 = Matrix1 * Matrix2;

Matrix5.WriteMatrix();

Matrix5.CheckNull();

 

Console.WriteLine();

// Умножение М * число.

Console.WriteLine("Матрицу №1 умножим на число по Вашему выбору (вводите число): ");

double dig = 0;

 

Start: try // Устанавливаем идентификатор для goto.

{

string str1 = Console.ReadLine();

dig = double.Parse(str1); // Явно преобразуем to double.

Matrix1 = Matrix1 * dig;

Matrix1.WriteMatrix();

Matrix1.CheckNull();

}

catch (System.Exception ex)

{

Console.WriteLine(ex.Message);

goto Start; // При неверном вводе переходим к началу цикла.

}

Console.WriteLine();

 

// Транспорируем.

Matrix1.Trans();

 

// Создадим диагональную матрицу.

Matrix1.CreateDiagMatrix();

 

}

}

}



<== предыдущая лекция | следующая лекция ==>
Чувашия приняла участие в конкурсе на получение президентских грантов для НКО | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.101 сек.