Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 57

Сравнить объекты через Equals()

26.10.2016, 22:34. Показов 2998. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Equals( ) – сравнивает две продажи (считаются равными, если совпадают название и цена). количество в учет не брать
метод Equals( ) обозначен не правильно
нужно реализовать в одном общем цикле вывод всех записей нахождение макс и являются ли все покупки равными (да/нет) через метод Equals( ). и после цикла вывести значение (да/нет). зачеркнутое сделано
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace zadanie2_1
{
    class UltraPokupka : Pokupka
    {
        int k=10;
 
        public UltraPokupka(string newName, double newCena, int newKol)
        {
            Cena = newCena;
            Name = newName;
            Kol = newKol;
        }
 
        public override double GetCost()
        {
            if (Kol >= k)
            { return (Cena * Kol * (1 - 0.10)); }
            else
            { return (Cena * Kol); }
        }
        public override string ToString()
        {
            return string.Format("{0};{1};{2};{3};", Name, Cena, Kol, GetCost());
        }
    }
}
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace zadanie2_1
{
    class SuperPokupka : Pokupka
    {
 
        public SuperPokupka(string newName, double newCena, int newKol)
        {
            Cena = newCena;
            Name = newName;
            Kol = newKol;
        }
 
        public override double GetCost()
        {
            return ((Cena-1) * Kol);
        }
        public override string ToString()
        {
            return string.Format("{0};{1};{2};{3};", Name, Cena, Kol, GetCost());
        }
       
    }
}
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace zadanie2_1
{
    class Pokupka
    {
        private string name;
        private double cena;
        private int kol;
 
        public Pokupka(string newName, double newCena, int newKol)
        {
            Cena = newCena;
            Name = newName;
            Kol = newKol;
        }
 
        public Pokupka()
        {
        }
 
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
 
        public double Cena
        {
            get
            {
                return cena;
            }
            set
            {
                cena = value;
            }
        }
 
        public int Kol
        {
            get
            {
                return kol;
            }
            set
            {
                kol = value;
            }
        }
 
        public virtual double GetCost()
        {
            return (Cena * Kol);
        }
 
        public override string ToString()
        {
            return string.Format("{0};{1};{2};{3};", Name, Cena, Kol, GetCost());
        }
      //  public override bool Equals()
     //   {
      //      if (Cena == Cena && Name == Name) return true;
      //      else
      //      return false;
      //  }
 
    }
}
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace zadanie2_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Pokupka[] prod = new Pokupka[6];
            prod[0] = new Pokupka("limon", 4, 6);
            prod[1] = new Pokupka("limon", 4, 2);
           // SuperPokupka[] prod = new SuperPokupka[2];
            prod[2] = new SuperPokupka("limon", 4, 8);
            prod[3] = new SuperPokupka("limon", 4, 10);
            // SuperPokupka[] prod = new UltraPokupka[2];
            prod[4] = new UltraPokupka("limon", 4, 5);
            prod[5] = new UltraPokupka("limon", 4, 20);
 
 
            Pokupka maxP = prod[0];
 
            for (int i = 0; i < prod.Length; i++)
            {
                Console.WriteLine(prod[i]);
 
                if (maxP.GetCost() < prod[i].GetCost())
                {
                    maxP = prod[i];
                }
            };
 
         //   for (int i = 0; i < prod.Length; i++)
        //    {
        //        prod[i].Equals(prod[i+1]);
        //    };
            Console.WriteLine();
            Console.WriteLine(" макс. покупкa : {0}", maxP);
       
            Console.ReadKey();
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2016, 22:34
Ответы с готовыми решениями:

Как сравнить 2 массива через Equals?
Помогите пожалуйста разобраться, как сравнить 2 массива class Arrays&lt;T&gt; { T array; public Arrays() { array =...

Как сравнить объекты на не равенство?
is используется для сравнения объектов, например if(obj is classRect){.....} а как сравнить на не равенство, я думал так, но не...

Сравнение экземпляров String через Equals
Здравствуйте! Подскажите пожалуйста, мне в программе необходимо реализовать свой собственный метод получения типа элемента, посланного в...

5
28 / 28 / 23
Регистрация: 06.10.2016
Сообщений: 74
26.10.2016, 23:27
вот так можно:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
            //   for (int i = 0; i < prod.Length; i++)
            //    {
            //        prod[i].Equals(prod[i+1]);
            //    };
            Console.WriteLine();
            Console.WriteLine(" макс. покупкa : {0}", maxP);
 
            var ar = prod.Select(x => x).GroupBy(a => a.Name, b => b.Cena);
            foreach (var c in ar)
                Console.WriteLine(" товар {0}  в количестве {1}", c.Key, c.Count());
 
            Console.ReadKey();;
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
26.10.2016, 23:54
Цитата Сообщение от ner94 Посмотреть сообщение
являются ли все покупки равными (да/нет) через метод Equals( )
C#
1
2
3
4
5
6
7
        public override bool Equals(object obj)
        {
            var other = obj as Pokupka;
            if (other == null) return false;
 
            return name == other.name && Math.Abs(cena - other.cena) < 0.01;
        }
0
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 57
27.10.2016, 00:18  [ТС]
Storm23,
C#
1
2
3
4
5
6
7
public override bool Equals(object obj)
        {
            var other = obj as Pokupka;
            if (other == null) return false;
 
            return name == other.name && Math.Abs(cena - other.cena) < 0.01;
        }
и мой вариант.
C#
1
2
3
4
5
6
7
8
9
public override bool Equals(object input)
        {
            SuperPokupka tempSuperPokupka = (SuperPokupka)input;
 
            if (Cena == tempSuperPokupka.Cena && Name == tempSuperPokupka.Name)
                return true;
            else
                return false;
        }
в такой записи
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int k = 0;
int g = 0;
for (int i = 0; i < prod.Length; i++)
            {
                Console.WriteLine(prod[i]);
 
                if (maxP.GetCost() < prod[i].GetCost())
                {
                    maxP = prod[i];
                }
                if (prod[k].Equals(prod[k + 1]) == true)
                { g = g + 1; }
                else
                { }
            };
            if (g == 6)
            { Console.WriteLine("да"); }
            else { Console.WriteLine("нет"); }
реагирует на изменения только в двух первых строках массива

Добавлено через 7 минут
уже и переопределял метод для других классов. все равно только по классу покупка смотрит
только первые две строки
public override bool Equals(object obj)
{
var other = obj as SuperPokupka;
if (other == null) return false;

return Name == other.Name && Math.Abs(Cena - other.Cena) < 0.01;
}
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
27.10.2016, 00:21
ner94, так у вас k не меняется, вы в цикле всегда сравниваете первые два элемента.
0
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 57
27.10.2016, 11:03  [ТС]
ошибка в цикле есть, цикл идет 6 раз а сравнений 5 должно быть. но все равно почему реагирует на две строки

Добавлено через 3 минуты
Lexeq, можете написать запись как должно быть в моем варианте. если бы это отдельным циклом то я бы и сам придумал а мне надо 3 действия в одно цикле.

Добавлено через 7 минут
Lexeq, если все делать в одном цикле через переменную i, то он присваивает ей значение 7 в последнем а такой записи нет. впринципе как и через любую другую перем. если в одном цикле

Добавлено через 10 часов 30 минут
не знаю как сделать одним циклом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2016, 11:03
Помогаю со студенческими работами здесь

Как сравнить объекты в методе обобщенного класса?
Привет. Как сравнить объекты в методе обобщенного класса? У меня пишет что: Operator '==' can not be applied to oprend of type 'T' and...

Переопределение equals в классах, содержащих объекты друг друга
Здравствуйте. Как переопределить equals в классах, которые содержат в своих атрибутах объекты друг друга. Или это плохая архитектура? ...

Можно ли сравнить объекты jquery
Всем привет, такой вопрос В коде пишу например if ($(this) == $('id'))alert ('rabotaer') По идее, когда я нажимаю на...

Cоздать класс для объектов и сравнить объекты с друг другом
Надо создать 2 объекта, создать класс для объектов и сравнить объекты с друг другом, вот такое задание, не могу правильно сделать, всегда...

Усовершенствовать функцию, чтобы она могла сравнить такие объекты- чтобы отличить объект от массива, можно использовать
let foo = { a: true, b: undefined, c: null, d: 32.6, e: 'wow', f: { g: 15, h: 'hah', },


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru