Перегрузить операторы > и <, считая что один сотрудник больше другого, если принят на работу раньше - C#

  1. Разработать класс Worker (сотрудник), содержащий следующие поля: personID (табельный номер сотрудника), family (фамилия сотрудника), date (дата приёма на работу); методы: GetStage() — получить стаж сотрудника. Перегрузить операторы > и <, считая что один сотрудник больше другого, если принят на работу раньше. проверти код, что в нем не так, просто нам надо сделать с конструкторами


textual

Код к задаче: «Перегрузить операторы > и <, считая что один сотрудник больше другого, если принят на работу раньше - C#»

using System;
 
namespace ConsoleApplication1
{
    public class Worker
    {
        int personID;
        string family;
        DateTime date;
 
        public Worker()
            : this(0, string.Empty, new DateTime())
        {
        }
 
        public Worker(int personID, string family, DateTime date)
        {
            this.personID = personID;
            this.family = family;
            this.date = date;
        }
 
        public Worker(Worker worker)
            : this(worker.ID, worker.Family, worker.Date)
        {
        }
 
        public int ID
        {
            set { personID = value; }
            get { return personID; }
        }
 
        public string Family
        {
            set { family = value; }
            get { return family; }
        }
 
        public DateTime Date
        {
            set { date = value; }
            get { return date; }
        }
 
        public int GetStage()
        {
            return (DateTime.Now - Date).Days;
        }
 
        public static bool operator >(Worker w1, Worker w2)
        {
            if (w1.date < w2.date)
                return true;
            return false;
        }
 
        public static bool operator <(Worker w1, Worker w2)
        {
            if (w1.date > w2.date)
                return true;
            return false;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Worker w1 = new Worker(1276, "Иванов", new DateTime(2011, 11, 9));
            DisplayStageInfo(w1);
            Worker w2 = new Worker(1256, "Петров", new DateTime(2010, 11, 14));
            DisplayStageInfo(w2);
 
            Console.ReadKey();
        }
 
        private static void DisplayStageInfo(Worker worker)
        {
            if (worker.Date < DateTime.Now)
                Console.WriteLine("Стаж работника {0} = {1} дней", worker.Family, worker.GetStage());
            else
                Console.WriteLine("Некоректная дата поступления работника");
        }
    }
}

СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 4.364 из 5



Похожие ответы
  1. Недавно начал программировать в C#. Помогите, пожалуйста, простыми методами, используя двумерные массивы и операторы цикла while, for... в консоли организовать ввод и вывод данных. Вот два примера ввода и вывода в консоли, которые должны получится:входные данныеXML1 2 3 4 5 6 7                                 выходные данныеXML1 2 3 4 5 6 7 8 9                                         входные данныеXML1 2 3 4 5 6 7 8 9                                         выходные данныеXML1 2 3 4 5 6 7 8 9                                         Полное условие задачи Кликните здесь для просмотра всего текста XML-документ ограничение по времени на тест2 секунды ограничение по памяти на тест256 мегабайт вводstdin выводstdout Вам дан XML-документ в следующем формате: корневым элементом документа является элемент с именем «projects»; элемент «projects» содержит один или несколько элементов «project» с единственным атрибутом «name»; каждый элемент «project» содержит один или несколько пустых элементов «member» с атрибутами «role» и «name». Каждое значение атрибута «name» элемента «project» — это непустая последовательность из строчных латинских букв и символа «дефис» (он же «минус»). Значение атрибута «role» элемента «member» — это также непустая последовательность из строчных латинских букв и символа «дефис» (он же «минус»). Значение атрибута «name» элемента «member» — это также непустая последовательность из строчных и заглавных латинских букв и пробелов. Значение этого атрибута не может начинаться или заканчиваться пробелом. Других атрибутов, кроме тех, что описаны выше, у элементов нет. Необходимо преобразовать этот документ в следующий вид: корневым элементом результата должен быть элемент с именем «members»; элемент «members» содержит один или несколько элементов «member» с единственным атрибутом «name»; каждый элемент «role» содержит один или несколько пустых элементов «role» с атрибутами «project» и «name». Для дополнительных разъяснений изучите пример входных и выходных данных. Учтите, что при сравнении значений атрибутов регистр букв имеет значение. Входные данные Входные данные состоят из некоторого количества строк, образующих XML-документ в описанном выше формате. Все элементы «project» имеют уникальные значения атрибутов «name». Каждый элемент находится на отдельной строке. Строки с открывающим и закрывающим тегами элемента «projects» не содержат начальных пробелов, в начале строк с тегами элементов «project» ровно четыре пробела, в начале строк с тегами элементов «member» — ровно восемь пробелов. Строки не содержат концевых пробелов. Атрибуты внутри элементов разделены единичными пробелами. У любых двух элементов «member» внутри одного и того же элемента «project» различаются либо значения атрибута «role», либо значения атрибута «name», либо и те, и другие одновременно. Выходные данные Выведите документ в требуемом формате. Строго соблюдайте формат, показанный в примере выходных данных. Атрибуты элемента «role» должны следовать в следующем порядке: сначала «name», затем «project». Элементы «member» должны следовать в лексикографическом порядке значений атрибутов «name». В каждом элементе «member» элементы «role» должны следовать в лексикографическом порядке значений атрибутов «project», а при равенстве — в лексикографическом порядке значений атрибутов «name». Все лексикографические сравнения осуществляйте с учетом регистра символов. Например, строка «Ba» лексикографически меньше строки «aa». Примеры входные данныеXML1 2 3 4 5 6 7                                 выходные данныеXML1 2 3 4 5 6 7 8 9                                         входные данныеXML1 2 3 4 5 6 7 8 9                                         выходные данныеXML1 2 3 4 5 6 7 8 9                                         Язык * Время работы вашего решения на Oracle Java JDK/JRE 8 не должно превышать 2 секунд на тест Исходный код Полный экран: F8 1 /* This is just the sample code to print A+B */ 2 3 import java.util.Scanner; 4 5 public class Solution { 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 int a = scanner.nextInt(); 9 int b = scanner.nextInt(); 10 System.out.println(a + b); 11 } 12 } Добавлено через 9 часов 17 минут Написал пока только считывание строк с клавиатуры в одномерном массиве, помогите, пожалуйста

  1. Нужно в программу добавить реализацию интерфейса IComparable и перегрузить операции отношения для реализации семантики.

  1. Возник вопрос, в javascript есть такой оператор как Javascript1 a >>> b он Сдвигает двоичное представление a на b битов вправо, отбрасывая сдвигаемые биты и добавляя нули слева Как сделать тоже самое с C#?

  1. Решите задачу тремя способами - используя операторы цикла while, do while и for. Вывести на экран:только отрицательные четные числа из диапазона от А до В (А<В);

  1. Описать класс для хранения массива чисел. Перегрузить в классе оператор %, который должен находить остаток от деления элементов первого массива на соответствующие элементы второго массива. Если размеры массива отличаются, то вывести соответствующее сообщение.

  1. Перегрузить функцию max(), при помощи которой будет находиться максимальное число среди: а) двух целых чисел; б) трех целых чисел; в) двух дробных чисел.

  1. Перегрузить функцию min(), при которой будет находиться минимальное число среди: а) двух целых чисел; б) трех целых чисел; в) четырех дробных чисел. Вот что есть!

  1. Привет. Описать класс для хранения массива чисел. Перегрузить в классе оператор *, который должен находить произведение четных элементов двух массивов.

  1. Читаю Troelson-а, у него написано C# interfaces can define operators! читаю MSDN там написано An interface can't contain constants, fields, operators... В чем подвох ?

  1. В класс Triangle добавить: a. Индексатор, позволяющий по индексу 0 обращаться к полю a, по индексу 1 – к полю b, по индексу 2 – к полю c, при других значениях индекса выдается сообщение об ошибке. b. Перегрузку:  операции ++ (--): одновременно увеличивает (уменьшает) значение полей a, b и c на 1;  констант true и false: обращение к экземпляру класса дает значение true, если треугольник с заданными длинами сторон существует, иначе false;  операции *: одновременно домножает поля a, b и c на скаляр;  преобразования типа Triangle в string (и наоборот)