Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
1

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

12.05.2014, 20:47. Просмотров 1469. Ответов 14
Метки нет (Все метки)

Помоготите кто может)))пожалуйста)
Цель работы: Познакомиться с принципами перегрузки операторов в ЯП С#. Создать класс, реализующий перегрузку операторов, разработать оконное приложение для работы с методами данного класса.
Общее задание:
1) Выполнить задание по вариантам, реализовав один или несколько предложенных классов. Классы должны содержать перегруженные версии арифметических операторов и оператора индексации, а также все необходимые конструкторы, поля и свойства;
2) Реализовать оконное приложение для работы с классами (создание объектов, ввод параметров, выполнение операций).
Замечания:
1) В некоторых заданиях требуется создать класс, представляющий вектор объектов заданного типа. Реализация такого класса является тривиальной, а сам класс играет сугубо рудиментарную роль (нужен только для того, чтобы самостоятельно реализовать операцию индексации);
2) Во всех классах необходимо предусмотреть корректную обработку некорректных входных данных.


Задание:
8) Реализовать класс Восьмеричное число. Перегрузить арифметические операторы для выполнения сложения, умножения, вычитания и деления объектов класса Восьмеричное число. Создать класс Вектор восьмеричных чисел с перегрузкой операции индексации.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2014, 20:47
Ответы с готовыми решениями:

Создать класс "Дата" с конструкторами, деструктором, указанными методами. Выполнить перегрузку указанных операторов
Создать класс Дата, с конструкторами, деструктором, установить дату, увеличить на 1 день (++),...

Разработать в Visual C++ оконное приложение Win32 для работы с процессами
Здравствуйте! Пытаюсь сделать приложение по предоставленным пунктам. Разработать в Visual...

Разработать класс содержащий перегрузку операторов
Создать класс Money, содержащий следующие члены класса: +1. Поля: •int first;//номинал...

Создать класс для работы с датой. Разработать следующие элементы класса
Можно полный код для запуска программы? Создать класс для работы с датой. Разработать следующие...

14
2348 / 1768 / 378
Регистрация: 15.12.2013
Сообщений: 7,386
12.05.2014, 20:50 2
Цитата Сообщение от Tanyatanyatanya Посмотреть сообщение
Помоготите кто может)))пожалуйста)
И в чем по вашему заключается помощь?
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
12.05.2014, 20:52  [ТС] 3
Реализовать класс....
0
2348 / 1768 / 378
Регистрация: 15.12.2013
Сообщений: 7,386
13.05.2014, 09:16 4
Tanyatanyatanya, то есть сделать все за вас?Задание объемное желающих будет не много.
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
13.05.2014, 11:10  [ТС] 5
Надежда умирает последней....
Мир не без добрых людей...
0
Модератор
Эксперт .NET
5078 / 3986 / 1146
Регистрация: 12.10.2013
Сообщений: 11,588
Записей в блоге: 2
13.05.2014, 11:33 6
Лучший ответ Сообщение было отмечено Tanyatanyatanya как решение

Решение

Tanyatanyatanya, не переживайте вы так...
Вот ваш класс.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication21
{
    public class OctNumber
    {
        //Внутренее представление (Int32)
        private int innerNumber;
 
        //Цепочка конструкторов
        public OctNumber(int intNumber)
            : this(intNumber.ToString()) { }
 
        public OctNumber(string strNumber)
        {
            //Проверка данных
            bool check = strNumber.Any((Func<char, bool>)delegate(char ch)
            {
                return (char.IsDigit(ch) && char.GetNumericValue(ch) > 7);
            });
            //Если проверка не прошла-выбрасываем исключение. Не забыть отловить его!!!
            if (check)
                throw new ArgumentException("Invalid argument!");
            else
                innerNumber = Convert.ToInt32(strNumber, 8);
        }
        //Оператор сложения
        public static OctNumber operator +(OctNumber num1, OctNumber num2)
        {           
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            string temp = Convert.ToString((temp1 + temp2), 8);
            return new OctNumber(temp);
        }
        //Оператор вычитания
        public static OctNumber operator -(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            string temp = Convert.ToString((temp1 - temp2), 8);
            return new OctNumber(temp);
        }
        //Оператор умножения
        public static OctNumber operator *(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            string temp = Convert.ToString((temp1 * temp2), 8);
            return new OctNumber(temp);
        }
        //Оператор деления
        public static OctNumber operator /(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            string temp = Convert.ToString((temp1 / temp2), 8);
            return new OctNumber(temp);
        }
        //Перегрузка Equals()
        public override bool Equals(object obj)
        {
            if (obj is OctNumber)
            {
                return this.ToString() == ((OctNumber)obj).ToString();
            }
            return false;
        }
        //Перегрузка GetHashCode()
        public override int GetHashCode()
        {
            return this.innerNumber.GetHashCode();
        }
        //Перегрузка ToString()
        public override string ToString()
        {
            return Convert.ToString(innerNumber, 8);
        }
    }
}
Вот проверка его работы.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication21
{
    class Program
    {
        static void Main(string[] args)
        {
            //Число 1
            OctNumber octNum1 = new OctNumber(11);
            //Число 2
            OctNumber octNum2 = new OctNumber("11");
 
            //Сложение
            OctNumber octNum3 = octNum1 + octNum2;
            Console.WriteLine(octNum3.ToString());
 
            //Вычитание
            OctNumber octNum4 = octNum1 - octNum2;
            Console.WriteLine(octNum4.ToString());
 
            //Умножение
            OctNumber octNum5 = octNum1 * octNum2;
            Console.WriteLine(octNum5.ToString());
 
            //Деление
            OctNumber octNum6 = octNum1 / octNum2;
            Console.WriteLine(octNum6.ToString());
            
            //Сравнение
            Console.WriteLine(octNum1.Equals(octNum2));
            Console.ReadLine();
            
        }
    }
}
По классу Вектор уточните, что это должно быть. Просто коллекция классов восьмеричного числа? Или еще как-то?
1
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
13.05.2014, 11:41  [ТС] 7
Спасибо вам большущее))Мир не без добрых людей!)))
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
21.05.2014, 00:46  [ТС] 8
Подскажите пожалуйста, почему при вычитании с числами 7 и 17 ответ не правильный....
0
Модератор
Эксперт .NET
5078 / 3986 / 1146
Регистрация: 12.10.2013
Сообщений: 11,588
Записей в блоге: 2
21.05.2014, 07:28 9
Tanyatanyatanya, вот так класс переделайте.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication44
{
    public class OctNumber
    {
        //Внутренее представление (string,base_8)
        private string innerOctNumber;
 
        //Цепочка конструкторов
        public OctNumber(int intNumber)
            : this(intNumber.ToString()) { }
 
        public OctNumber(string strNumber)
        {
            //Проверка данных
            bool check = strNumber.Any((Func<char, bool>)delegate(char ch)
            {
                return (char.IsDigit(ch) && char.GetNumericValue(ch) > 7);
            });
            //Если проверка не прошла-выбрасываем исключение. Не забыть отловить его!!!
            if (check)
                throw new ArgumentException("Invalid argument!");
            else
            {
                innerOctNumber = Convert.ToString(int.Parse(strNumber), 8);
            }
        }
        //Оператор сложения
        public static OctNumber operator +(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            int temp = temp1 + temp2;
            return new OctNumber(temp);
        }
        //Оператор вычитания
        public static OctNumber operator -(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            int temp = temp1 - temp2;
            return new OctNumber(temp);
        }
        //Оператор умножения
        public static OctNumber operator *(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            int temp = temp1 * temp2;
            return new OctNumber(temp);
        }
        //Оператор деления
        public static OctNumber operator /(OctNumber num1, OctNumber num2)
        {
            int temp1 = Convert.ToInt32(num1.ToString(), 8);
            int temp2 = Convert.ToInt32(num2.ToString(), 8);
            int temp = temp1 / temp2;
            return new OctNumber(temp);
        }
        //Перегрузка Equals()
        public override bool Equals(object obj)
        {
            if (obj is OctNumber)
            {
                return this.ToString() == ((OctNumber)obj).ToString();
            }
            return false;
        }
        //Перегрузка GetHashCode()
        public override int GetHashCode()
        {
            return this.innerOctNumber.ToString().GetHashCode();
        }
        //Перегрузка ToString()
        public override string ToString()
        {
            return innerOctNumber;
        }
    }
}
1
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
28.05.2014, 23:24  [ТС] 10
может я вам уже и надоела)
но выводит ошибки.....связанные с OctNumber


Ошибка 1 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 13 13 laba4
Ошибка 2 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 13 37 laba4
Ошибка 3 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 15 13 laba4
Ошибка 4 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 15 37 laba4
Ошибка 5 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 18 13 laba4
Ошибка 6 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 22 13 laba4
Ошибка 7 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 26 13 laba4
Ошибка 8 Не удалось найти имя типа или пространства имен "OctNumber" (пропущена директива using или ссылка на сборку?) 30 13 laba4
0
Модератор
Эксперт .NET
5078 / 3986 / 1146
Регистрация: 12.10.2013
Сообщений: 11,588
Записей в блоге: 2
28.05.2014, 23:32 11
Tanyatanyatanya, скиньте ваш проект.
0
25 / 25 / 8
Регистрация: 30.04.2013
Сообщений: 79
28.05.2014, 23:36 12
Если вы скопировали все под частую, по в главном окне приложения

C#
1
using ConsoleApplication21
Или же просто перепишите название namespace которое представлено тут на свое.
1
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
28.05.2014, 23:59  [ТС] 13
но при вычитании чисел 7 и 17 выдаёт не правильный ответ.... нужно 17....6
а у меня выдаёт 37...6(
0
Модератор
Эксперт .NET
5078 / 3986 / 1146
Регистрация: 12.10.2013
Сообщений: 11,588
Записей в блоге: 2
29.05.2014, 00:21 14
Tanyatanyatanya, вы уточните, в каком формате надо вводить числа и в каком выводить. Программа сама это понять не сможет...
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 28
29.05.2014, 00:34  [ТС] 15
вводить и выводить int. хранить их как целые обычные числа, а вот операции с ними делать как будто это восьмеричные)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2014, 00:34

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

Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса:
Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса:...

Реализовать перегрузку заданных операторов для пользовательского класса комплексных чисел
Нужно добавить операторы перегрузки для комплексных чисел, но я что-то вообще не догоняю как это...

Cоздать оконное приложение для работы с углами на плоскости
создать оконное приложение для работы с углами на плоскости, задаваемыми величиной в 0,30,45,60 и...

Оконное приложение для работы с базой данных MS Access
Всех приветствую. Подскажите, на каком языке программирования(или среде разработки ПО) проще и...


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

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

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