Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABA3.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
700.34 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

Национальный аэрокосмический университет им. Н.Е. Жуковского

“Харьковский авиационный институт”

Кафедра компьютерных систем и сетей

Титульный лист заполняется на украинском языке

Остальная часть отчета может быть как на украинском, так и на русЛабораторна робота № 3

Конструкторы. Перегрузка методов и операторов

По дисциплине «Обьектно-ориентированное программирование»

ХАІ.503.525аБУКВА_ГРУППЫ.140.050102,НОМЕР_ЗАЧЕТКИ 1305097

Выполнил студент гр. 52Б Игнатов К.П.

(№ группы) (Ф.И.О.)

(підпис, дата)

Проверил Шостак А.В.

(науковий ступінь, вчене звання, посада)

Харьков

2014

  1. Код программы.

/****************************************/

/* Лабораторная работа №3 */

/* Конструкторы. */

/* Перегрузка методов и операторов */

/* Задание 1 */

/* Выполнил студент гр.525а ИгнатовК.П.*/

/****************************************/

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double a, b, c;

int operation;

bool q;

RadiusVektor otvet = new RadiusVektor();

Console.WriteLine("Введите координаты первого вектора: ");

double[] vekt1 = Console.ReadLine().Split(' ').Select(u => Convert.ToDouble(u)).ToArray();

Console.WriteLine("Введите координаты второго вектора: ");

double[] vekt2 = Console.ReadLine().Split(' ').Select(u => Convert.ToDouble(u)).ToArray();

a = vekt1[0];

b = vekt1[1];

RadiusVektor RV1 = new RadiusVektor(a, b);

a = vekt2[0];

b = vekt2[1];

RadiusVektor RV2 = new RadiusVektor(a, b);

Console.WriteLine("Введитеоперацию: ");

Console.WriteLine("0 - '+'\n1 - '-'\n2 - '!='\n3 - '=='\n4 - '/'\n5 - '*'\n6 - '<'\n7 - '>'\n8 - '<='\n9 - '>='");

operation = Int32.Parse(Console.ReadLine());

switch (operation)

{

case 0: otvet = RV1 + RV2; Console.WriteLine("Ответ: " + otvet.ToString()); break;

case 1: otvet = RV1 - RV2; Console.WriteLine("Ответ: " + otvet.ToString()); break;

case 2: q = RV1 != RV2; Console.WriteLine("Ответ: " + q.ToString()); break;

case 3: q = RV1 == RV2; Console.WriteLine("Ответ: " + q.ToString()); break;

case 4: Console.WriteLine("Введите константу делитель: ");

c = Double.Parse(Console.ReadLine());

otvet = RV1 / c;

Console.WriteLine("Ответ: " + otvet.ToString()); break;

case 5: Console.WriteLine("Введите константу множитель: ");

c = Double.Parse(Console.ReadLine());

otvet = RV1 * c;

Console.WriteLine("Ответ: " + otvet.ToString()); break;

case 6: q = RV1 < RV2; Console.WriteLine("Ответ: " + q.ToString()); break;

case 7: q = RV1 > RV2; Console.WriteLine("Ответ: " + q.ToString()); break;

case 8: q = RV1 <= RV2; Console.WriteLine("Ответ: " + q.ToString()); break;

case 9: q = RV1 >= RV2; Console.WriteLine("Ответ: " + q.ToString()); break;

}

}

}

class RadiusVektor

{

private double X;

private double Y;

/// <summary>

/// конструктор без параметров

/// </summary>

public RadiusVektor()

{

X = 0;

Y = 0;

}

/// <summary>

/// конструктор

/// </summary>

/// <param name="a">Х</param>

/// <param name="b">Y</param>

public RadiusVektor(double a, double b)

{

X = a;

Y = b;

}

/// <summary>

/// перегрузка оператора +

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static RadiusVektor operator +(RadiusVektor obj1, RadiusVektor obj2)

{

RadiusVektor otvet = new RadiusVektor();

otvet.X = obj1.X + obj2.X;

otvet.Y = obj1.Y + obj2.Y;

return otvet;

}

/// <summary>

/// перегрузка оператора -

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static RadiusVektor operator -(RadiusVektor obj1, RadiusVektor obj2)

{

RadiusVektor otvet = new RadiusVektor();

otvet.X = obj1.X - obj2.X;

otvet.Y = obj1.Y - obj2.Y;

return otvet;

}

/// <summary>

/// перегрузка оператора !=

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static bool operator !=(RadiusVektor obj1, RadiusVektor obj2)

{

return obj1.Compare(obj2) != 0;

}

/// <summary>

/// перегрузка оператора ==

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static bool operator ==(RadiusVektor obj1, RadiusVektor obj2)

{

return obj1.Compare(obj2) == 0;

}

/// <summary>

/// перегрузка оператора /

/// </summary>

/// <param name="obj1">объект</param>

/// <param name="a">делитель</param>

/// <returns>результирующий объект</returns>

public static RadiusVektor operator /(RadiusVektor obj1, double a)

{

RadiusVektor otvet = new RadiusVektor();

otvet.X = obj1.X / a;

otvet.Y = obj1.Y / a;

return otvet;

}

/// <summary>

/// перегрузка оператора *

/// </summary>

/// <param name="obj1">объект</param>

/// <param name="a">множитель</param>

/// <returns>результирующий объект</returns>

public static RadiusVektor operator *(RadiusVektor obj1, double a)

{

RadiusVektor otvet = new RadiusVektor();

otvet.X = obj1.X * a;

otvet.Y = obj1.Y * a;

return otvet;

}

/// <summary>

/// перегрузка оператора <

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static bool operator <(RadiusVektor obj1, RadiusVektor obj2)

{

return obj1.Compare(obj2) < 0;

}

/// <summary>

/// перегрузка оператора >

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static bool operator >(RadiusVektor obj1, RadiusVektor obj2)

{

return obj1.Compare(obj2) > 0;

}

/// <summary>

/// перегрузка оператора <=

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static bool operator <=(RadiusVektor obj1, RadiusVektor obj2)

{

return obj1.Compare(obj2) <= 0;

}

/// <summary>

/// перегрузка оператора >=

/// </summary>

/// <param name="obj1">первый объект</param>

/// <param name="obj2">второй объект</param>

/// <returns>результирующий объект</returns>

public static bool operator >=(RadiusVektor obj1, RadiusVektor obj2)

{

return obj1.Compare(obj2) >= 0;

}

/// <summary>

///

/// </summary>

/// <param name="val">объект сравниваемый с текущим</param>

/// <returns>результат сравнения</returns>

public int Compare(RadiusVektor val)

{

double length1 = Math.Sqrt(this.X * this.X + this.Y * this.Y);

double length2 = Math.Sqrt(val.X * val.X + val.Y * val.Y);

if (length1 == length2)

return 0;

else if (length1 < length2)

return -1;

else return 1;

}

/// <summary>

/// переопределенный метод перевода объекта в строку

/// </summary>

/// <returns></returns>

public override string ToString()

{

return "(" + this.X + ";" + this.Y + ")";

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]