Создать класс 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();
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д