Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93

Простейшие классы

18.11.2009, 00:10. Показов 1611. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кому не сложно помогите пожалуйста.
Дана вот такая задачка:
Описать класс для работы со строкой, позволяющей хранить только двоичное число и выполянть с ним арифметические операции. Предусмотреть инициализацию с проверкой допустимости значений. В случае недопустимых значений выбрасываются исключения.
Написать программу, думонстрирующую все разработанные элементы класса.
Вот мой код:
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace LabRab4
{
    class Stroka
    {
        public double a;
        public double b;
        //конструктор
        public Stroka(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
        //методы
        public double plus()
        {
            return a + b;
        }
        public double minus()
        {
            return a - b;
        }
        public double umn()
        {
            return a * b;
        }
        public double del()
        {
            return a / b;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                int r = 2;
                //Ввод первого двоичного числа
                Console.WriteLine("Введите первое (двоичное) число: ");
                string buf = Console.ReadLine();
                int a = Convert.ToInt32(buf, r);
                //Ввод второго двоичного числа
                Console.WriteLine("Введите второе (двоичное) число: ");
                string buf1 = Console.ReadLine();
                int b = Convert.ToInt32(buf1, r);
                Console.WriteLine("a = {0}({1})   b = {2}({3})",a,buf,b,buf1);
                Stroka st = new Stroka(a, b);
                //Операция
                Console.WriteLine("Выберите операцию: ");
                char operac = (char)Console.Read();
                if (operac == '+')
                {
                    Console.WriteLine("Результат: " + st.plus());
                    Console.ReadLine();
                }
                else if (operac == '-')
                {
                    Console.WriteLine("Результат: " + st.minus());
                    Console.ReadLine();
                }
                else if (operac == '*')
                {
                    Console.WriteLine("Результат: " + st.umn());
                    Console.ReadLine();
                }
                else if (operac == '/')
                {
                    Console.WriteLine("Результат: " + st.del());
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Недопустимая операция");
                    Console.ReadLine();
                }
            }
            catch (DivideByZeroException)
            {
                Console.WriteLine("Попытка деления на ноль");
                Console.ReadLine();
            }
            catch (ArithmeticException)
            {
                Console.WriteLine("Ошибка в арифметических операциях");
                Console.ReadLine();
            }
            catch
            {
                Console.WriteLine("Неопознанное исключение");
                Console.ReadLine();
            }
            Console.ReadLine();
        }
    }
}
Программы выполняет все необходимые операции. Но мне сказали что неверно потому что "класс для работы со строкой".
И вот этот кусок должен быть строкового типа, а у меня числовой.
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
public double a;
        public double b;
        //конструктор
        public Stroka(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
        //методы
        public double plus()
        {
            return a + b;
        }
        public double minus()
        {
            return a - b;
        }
        public double umn()
        {
            return a * b;
        }
        public double del()
        {
            return a / b;
        }
Как это сделать? Для операции сложения действие выполняется.
C#
1
2
3
4
public string plus()
        {
            return a + b;
        }
Для других выдает ошибку. Помогите это исправить пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2009, 00:10
Ответы с готовыми решениями:

Простейшие классы. Л.р.
Помогите написать программу,пожалуйста Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел. Предусмотреть...

Распознать простейшие фигуры (треугольники) и посчитать их
Всем привет,собственно вопрос вот в чем,есть изображение загруженное в пикчербокс,там есть n-ое кол-во треугольников различной...

Простейшие классы
Описать класс "файл",содержищий сведения об имени,дате создания и длине файла.Предусмотреть инициализацию с проверкой допустимости значений...

3
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
18.11.2009, 01:49
Ваш класс должен работать со строками состоящими только из нулей и единиц(двоичными числами). Т.е, допустим у вас есть два числа(строки) 0010 и 0011, тогда сложение этих чисел будет происходить следующим образом(в cтолбик):
C#
1
2
3
4
5
6
  1
 0010
+
 0011
_______
 0101
т.е, при сложении 0 и 1, получается 1;
при сложении 0 и 0 получается 0;
результатом сложения 1 и 1, является 0, но при этом к результату следующей оперции прибавляется 1.
1
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
18.11.2009, 18:31  [ТС]
Нет. Вводится именно 2 двоичных числа, например, 0000 и 1111. 0000 это 0. 1111 это 15. Они переводятся в шеснадцатиричную систему счисления и с этими числами производится действие. Результат переводится обратно в двоичную систему , ну или его оставить таким как есть.
[
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
19.11.2009, 03:39
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
using System;
class Program
{
    static void Main(string[] args)
    {
        BinString s1 = new BinString("111");
        BinString s2 = new BinString("100");
        BinString s3 = s1 + s2;
        Console.WriteLine(s3);
        BinString s4 = Console.ReadLine();
        BinString s5 = Console.ReadLine();
        Console.WriteLine(s4 * s5);
    }
}
class BinString
{
    private string data;
    public BinString(string s)
    {
        data = s;
        Check(data);
    }
    public static implicit operator BinString(string s)
    {
        return new BinString(s);
    }
    private void Check(string s)
    {
        for (int i = 0; i < s.Length; i++)
        {
            if (s.Length == 0) throw new Exception("Строка пустая");
            if (s[i] != '1' && s[i] != '0')
            {
                throw new Exception("Ошибка ввода");
            }
        }
    }
    public static BinString operator +(BinString s1, BinString s2)
    {
        return new BinString(DecToBin(BinToDec(s1.data) + BinToDec(s2.data)));
    }
    public static BinString operator -(BinString s1, BinString s2)
    {
        return new BinString(DecToBin(BinToDec(s1.data) - BinToDec(s2.data)));
    }
    public static BinString operator *(BinString s1, BinString s2)
    {
        return new BinString(DecToBin(BinToDec(s1.data) * BinToDec(s2.data)));
    }
    public static BinString operator /(BinString s1, BinString s2)
    {
        return new BinString(DecToBin(BinToDec(s1.data) / BinToDec(s2.data)));
    }
    public override string ToString()
    {
        return data.ToString();
    }
    private static int BinToDec(string s)
    {
        return Convert.ToInt32(s, 2);
    }
    private static string DecToBin(int i)
    {
        string r = "";
        while (i > 0)
        {
            r += i % 2;
            i = i / 2;
        }        
        char[] c = new char[r.Length];
        for (int j = 0; j < r.Length; j++)
        {
            c[j] = r[r.Length - 1 - j];
        }
        return new string(c);
    }
}
работает только с целыми числами
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2009, 03:39
Помогаю со студенческими работами здесь

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

Простейшие классы в C#
Народ плз помогите, мне срочно нужно сдать прграммку на C#, выглядит она так: &lt;&lt; Задание №4. Простейшие классы Каждый...

Простейшие классы в C#
Каждый разрабатываемый класс должен, как правило, содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров,...

Простейшие классы.
Состовить описание класса для представления комплексных чисел. Обеспечить выполнение опрераций сложения, вычитания, умножения комплексных...

Простейшие классы. Точка
Приветствую! Товарищи, помогите пожалуйста с такой задачей :&quot;Описать класс &quot;цветная точка&quot;. Для точки задаются координаты и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru