Создать класс Rectangle, содержащий следующие члены класса - C#
Формулировка задачи:
VS 2010. Компилятор выдает ошибки, Предложение using должно предшествовать любым другим элементам пространства имен кроме объявлений внешних псевдонимов. Переношу Using ввер к остальным, ошибок становится больше. Как это исправить?
Создать класс Rectangle, содержащий следующие члены класса:
Классы и объекты
1. Поля:
• int a, b;
2. Конструктор, позволяющий создать экземпляр класса с заданными длинами сторон.
3. Методы, позволяющие:
• вывести длины сторон прямоугольника на экран;
• расчитать периметр прямоугольника;
• расчитать площадь прямоугольника.
4. Свойства, позволяющие:
• получить и установить длины сторон прямоугольника (доступные для чтения и
записи);
• установить, является ли данный прямоугольник квадратом (доступное только для
чтения).
5. Индексатор, позволяющий по индексу 0 обращаться к полю a, по индексу 1 – к полю b;
при других значениях индекса должно выдаваться сообщение об ошибке.
6. Перегруженные операции и константы, позволяющие:
• одновременно увеличить (уменьшить) значение полей a и b на 1 (операции ++ и --);
• узнать, является ли прямоугольник квадратом (константы true и false);
• одновременно умножить поля a и b на скаляр (операция *).
Продемонстрировать работу класса.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Study { class Rectangle { int a, b; int [] array = new int [2]; public Rectangle(int a, int b) { this.a = a; this.b = b; } public void Show () { Console.WriteLine("Storony " + a +" x " + b); } public int Perimetr () { return a * 2 + b * 2; } public int Square() { return a * b; } public int A { get { return a; } set { a = value; } } public int B { get { return b; } set { b = value; } } public bool K //kvadrat? { get { if (a == b) return true; else return false; } } public int this[int i] { get { if (i == 0) return a; else return 0; if (i == 1) return 1; else return 0; } set { if (i == 0) array[i] = a; if (i == 1) array[i] = b; } } public static Rectangle operator ++(Rectangle ob) { Rectangle ob1 = new Rectangle(ob.a, ob.b); ob1.a = ob.a + 1; ob1.b = ob.b + 1; return ob1; } public static Rectangle operator --(Rectangle ob) { Rectangle ob1 = new Rectangle(ob.a, ob.b); ob1.a = ob.a - 1; ob1.b = ob.b - 1; return ob1; } public static bool operator true(Rectangle ob) { if (ob.a == ob.b) return true; else return false; } public static bool operator false(Rectangle ob) { if (ob.a != ob.b) return true; else return false; } public static Rectangle operator *(Rectangle ob, int skal) { Rectangle ob1 = new Rectangle(ob.a, ob.b); ob1.a = ob.a * skal; ob1.b = ob.b * skal; return ob1; } public static implicit operator Rectangle (string a) //неявное преобразование типа int [] в DemoArray { return new Rectangle(a); } public static implicit operator int [](Rectangle a) //неявное преобразование типа DemoArray в int [] { int []temp=new int[a.LengthArray]; for (int i = 0; i < a.LengthArray; ++i) temp[i] = a[i]; return temp; } } } using System; using Study; class MyClass { static void Main() { Rectangle ob = new Rectangle(3,5); ob.Show(); Console.WriteLine("Perimentr = " + ob.Perimetr()); Console.WriteLine("Ploshad = " + ob.Square()); ob.A++; ob.B++; ob.Show(); ob.A--; ob.B--; ob.Show(); ob = ob * 2; ob.Show(); ob.A = 15; ob.B = 15; ob.Show(); if (ob) { Console.WriteLine("Eto kvadrat!"); } Console.ReadKey(); } }
Решение задачи: «Создать класс Rectangle, содержащий следующие члены класса»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { namespace Study { class Rectangle { int a, b; public Rectangle(int a, int b) { this.a = a; this.b = b; } public void Show() { Console.WriteLine("Стороны {0} x {1}", a, b); } public int Perimetr() { return a + a + b + b; } public int Square() { return a * b; } public int A { get { return a; } set { a = value; } } public int B { get { return b; } set { b = value; } } public bool K { get { return a == b; } } public int this[int i] { get { switch (i) { case 0: return a; case 1: return b; default: throw new Exception("Некорректный индекс"); } } set { switch (i) { case 0: a = value; break; case 1: b = value; break; default: throw new Exception("Некорректный индекс"); } } } public static Rectangle operator ++(Rectangle ob) { return new Rectangle(ob.a + 1, ob.b + 1); } public static Rectangle operator --(Rectangle ob) { return new Rectangle(ob.a - 1, ob.b - 1); } public static bool operator true(Rectangle ob) { return ob.K; } public static bool operator false(Rectangle ob) { return !ob.K; } public static Rectangle operator *(Rectangle ob, int skal) { return new Rectangle(ob.a * skal, ob.b * skal); } } class Program { static void Main(string[] args) { Rectangle ob = new Rectangle(3, 5); ob.Show(); Console.WriteLine("Периметр = " + ob.Perimetr()); Console.WriteLine("Площадь = " + ob.Square()); ++ob; ob.Show(); --ob; ob.Show(); ob *= 2; ob.Show(); ob.A = 15; ob.B = 15; ob.Show(); if (ob) Console.WriteLine("Это квадрат! "); else Console.WriteLine("Это не квадрат! "); ob[0] = 20; ob[1] = 10; ob.Show(); try { ob[2] = 20; } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadKey(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д