Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
snusmumrik007
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 4
#1

Создать класс Pair

07.05.2016, 15:19. Просмотров 794. Ответов 8
Метки нет (Все метки)

Создать класс Pair (пара чисел); определить методы изменения полей и срав¬нения пар: пара p1 больше пары р2, если (first.p1 > first.р2) или (first.p1 = first.р2) и (second.p1 > second.р2). Определить класс-наследник Fraction с но¬лями: целая часть числа и дробная часть числа. Определить полный набор ме¬тодов сравнения.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2016, 15:19
Ответы с готовыми решениями:

Создать класс Pair, определить методы изменения полей и вычисления произведения чисел
Уважаемые участники форума,напишите пожалуйста код следующей программы на C# ...

Создать класс Pair, определить методы изменения значений полей и вычисления произведения чисел
Создать класс Pair(пара чисел); определить методы изменения значений полей и...

Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические операции
Создать абстрактный класс Pair (пара значений) с виртуальными методами,...

Абстрактный класс Pair (пара значений) с виртуальными арифметическими операциями и методом вывода на экран
Подумал может кому пригодится :) Наследование В программах требуется ...

Создать класс колесо, имеющее радиус. Определить конструкторы. Создать класс машин, содержащий класс колесо
Создать класс колесо, имеющее радиус. Определить конструкторы. Создать класс...

8
Леманофф
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 237
07.05.2016, 16:06 #2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Класс программы
/*
 * Создано в SharpDevelop.
 * Пользователь: fast
 * Дата: 07.05.2016
 * Время: 15:47
 * 
 * Для изменения этого шаблона используйте меню "Инструменты | Параметры | Кодирование | Стандартные заголовки".
 */
using System;
 
namespace temp
{
    class Program
    {
        public static void Main(string[] args)
        {
            var MyPair = new Pair();
            MyPair.p1=100;
            MyPair.p2=170;
            Console.WriteLine(MyPair.DoComparison());
            
            var MyFraction=new Fraction();
            MyFraction.p1=100.123;
            MyFraction.p2=1100.12233;
            Console.WriteLine(MyFraction.DoComparsion());
            
            Console.ReadKey();
        }
    }
}
Класс Pair
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
 * Создано в SharpDevelop.
 * Пользователь: fast
 * Дата: 07.05.2016
 * Время: 15:48
 * 
 * Для изменения этого шаблона используйте меню "Инструменты | Параметры | Кодирование | Стандартные заголовки".
 */
using System;
 
namespace temp
{
    
    public class Pair
    {
        public double p1,p2;
        public Pair()
        {
            p1=0;
            p2=0;
            
            
        }
        
        public string DoComparison()
        {
            if (p1>p2) return "p1 больше p2";
            if (p1<p2) return "p1 меньше p2";
            if (p1==p2) return "p1 равно p2";
            return "";
        }
    }
}
Класс наследник
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * Создано в SharpDevelop.
 * Пользователь: fast
 * Дата: 07.05.2016
 * Время: 15:56
 * 
 * Для изменения этого шаблона используйте меню "Инструменты | Параметры | Кодирование | Стандартные заголовки".
 */
using System;
 
namespace temp
{
    /// <summary>
    /// Description of Fraction.
    /// </summary>
    public class Fraction:Pair
    {
        
        public Fraction()
        {
            
        }
        
        public string DoComparsion()
        {
            if (Math.Floor(p1)>Math.Floor(p2)) return "целая часть p1 больше целой части p2";
            if (Math.Floor(p1)<Math.Floor(p2)) return "целая часть p1 меньше целой части p2";
            if (Math.Floor(p1)==Math.Floor(p2)) return "целая часть p1 равна целой части p2";
            return"";
        }
    }
}
p.s.
сделал быстро, наспех. Сам новичек. Может кто допилит лучше.
0
MaxSlim
109 / 109 / 63
Регистрация: 03.06.2013
Сообщений: 584
07.05.2016, 16:31 #3
snusmumrik007, Леманофф
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Class_Pair
{
    class Program
    {
        static void Main(string[] args)
        {
            Pair p1 = new Pair(5, 8);
            Pair p2 = new Pair(4, 8);
 
            Console.WriteLine(p1.Equals(p2));
            Console.WriteLine(p1 > p2);
            Console.WriteLine(p1 < p2);
 
            Fraction fr1 = new Fraction(5, 6);
            Fraction fr2 = new Fraction(5, 6);
 
            Console.WriteLine(fr1.Equals(fr2));
            fr2.SetY(7);
            Console.WriteLine(fr1 > fr2);
            Console.WriteLine(fr1 < fr2);
            Console.ReadLine();
        }
    }
 
    class Pair
    {
        protected int X;
        protected int Y;
 
        public void SetX(int x)
        {
            X = x;
        }
        public void SetY(int y)
        {
            Y = y;
        }
 
        public override bool Equals(object obj)
        {
            return (obj is Pair) ? X == ((Pair)obj).X && Y == ((Pair)obj).Y : false;
        }
        public override int GetHashCode()
        {
            return ToString().GetHashCode();
        }
 
        public Pair(int x , int y)
        {
            X = x;
            Y = y;
        }
 
        public Pair()
        {
 
        }
        public static bool operator >(Pair p1, Pair p2)
        {
            return p1.X > p2.X || (p1.X == p2.X && p1.Y > p2.Y) ? true : false;
        }
        public static bool operator <(Pair p1, Pair p2)
        {
            return (p2.X > p1.X || (p2.X == p1.X && p2.Y > p1.Y) ? true : false);
        }
 
        public override string ToString()
        {
            return string.Format("X = {0}, Y = {1}", X, Y);
        }
 
    }
    class Fraction : Pair
    {
        public Fraction()
        {
 
        }
        public Fraction(int x, int y) : base(x,y)
        {
        }
        public override bool Equals(object obj)
        {
           return base.Equals(obj);
        }
        public override int GetHashCode()
        {
            return ToString().GetHashCode();
        }
        public override string ToString()
        {
            return string.Format($"{X}.{Y}");
        }
 
        public static bool operator >(Fraction fr1, Fraction fr2)
        {
            return double.Parse(fr1.ToString()) > double.Parse(fr2.ToString());
        }
        public static bool operator <(Fraction fr1, Fraction fr2)
        {
            return double.Parse(fr1.ToString()) < double.Parse(fr2.ToString());
        }
    }
}
0
Леманофф
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 237
07.05.2016, 16:55 #4
MaxSlim,
мне не понятно многое. По порядку -
модификатор override - читаю msdn: "Модификатор override требуется для расширения или изменения абстрактной или виртуальной реализации унаследованного метода, свойства, индексатора или события"

Откого class Pair наследуется ? от Object (глобальный базовый класс в .net) ?
0
EvilFromHell
944 / 843 / 345
Регистрация: 26.04.2012
Сообщений: 2,648
07.05.2016, 17:02 #5
Цитата Сообщение от Леманофф Посмотреть сообщение
Откого class Pair наследуется ? от Object (глобальный базовый класс в .net) ?
Да, от него.
0
Леманофф
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 237
07.05.2016, 17:03 #6
Цитата Сообщение от MaxSlim Посмотреть сообщение
return p1.X > p2.X || (p1.X == p2.X && p1.Y > p2.Y) ? true : false;
А это, что бы if () не писать, и сразу проверить, и вернуть по условию, с операторами отношения, сравнения, и если не null ? А зачем такой стиль кода нужен ?
0
Storm23
Эксперт .NETАвтор FAQ
5959 / 3558 / 1337
Регистрация: 11.01.2015
Сообщений: 4,693
Записей в блоге: 31
07.05.2016, 17:05 #7
Цитата Сообщение от MaxSlim Посмотреть сообщение
public override int GetHashCode()
{
return ToString().GetHashCode();
}
Фу-фу. Нельзя так делать. Во-первых, ToString - виртуальный метод. И если я сделаю наследник от вашего класса Pair и в нем переопределю ToString, например так:
C#
1
2
3
4
5
6
7
    class MyPair : Pair
    {
        public override string ToString()
        {
            return "ку-ку";
        }
    }
то ваша хеш-функция перестанет работать, что является неочевидным побочным эффектом.

В-вторых, время вычисления GetHashCode() - критически важно, потому что хеш используется в словарях, которые применяются для большой скорости поиска. Но о какой скорости может идти речь, если вы в GetHashCode создаете строку(что само по себе долго), а потом еще и считаете хеш от этой строки (что тоже долго)?

Должно быть так:
C#
1
2
3
4
        public override int GetHashCode()
        {
            return X^Y;
        }
1
MaxSlim
109 / 109 / 63
Регистрация: 03.06.2013
Сообщений: 584
07.05.2016, 20:27 #8
Storm23, хмм. Где-то у классиков видел такой пример нахождения хеша и даже выполнения сравнения через неё. Но я с вами согласен, а почему именно эта операция между элементами?
0
Storm23
Эксперт .NETАвтор FAQ
5959 / 3558 / 1337
Регистрация: 11.01.2015
Сообщений: 4,693
Записей в блоге: 31
07.05.2016, 21:28 #9
Цитата Сообщение от MaxSlim Посмотреть сообщение
Где-то у классиков видел такой пример нахождения хеша и даже выполнения сравнения через неё
Такие примеры есть у Троелсена, к сожалению. Это ошибка.

Цитата Сообщение от MaxSlim Посмотреть сообщение
Но я с вами согласен, а почему именно эта операция между элементами?
Ну XOR это стандартная операция по "смешиванию" значений. Например, контрольная сумма считается по XOR.
Удобство XOR заключается в том, что если X или Y отличается хоть на 1 бит, то X^Y также будет гарантированно отличаться на один бит. Что для хеша хорошо.
Вместо XOR можно было бы просто сложить X + Y, но тогда может возникнуть переполнение. С XOR переполнение никогда не возникнет.
1
07.05.2016, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2016, 21:28

Создать абстрактный класс «Товар», на его основе создать класс «Автомобиль»
Вечер добрый, а может и не добрый. В изучении C# столкнулся с такой проблемой -...

Создать класс Point, на его основе создать класс Line
Здравствуйте, есть такая часть задачки: &quot;Создать класс Point, на его основе...

Создать базовый класс прямоугольник и класс-наследник квадрат
Создать базовый класс прямоугольник со свойствами ширина, длина, конструктором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru