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

"обыкновенная дробь"

23.11.2011, 06:41. Показов 1996. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать класс "обыкн дробь", поля кл-числитель и знаменатель. В кл предусмотреть метод перегрузки операции умножение.
Проверьте пож-ста на ошибки. При вычислении почему-то 0 выдаёт...
programm.cs
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
namespace Drobi
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите числитель1 ");
            int a = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Введите знаменатель1 ");
            int a1 = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Введите числитель2 ");
            int b = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Введите знаменатель2 ");
            int b1 = Convert.ToInt16(Console.ReadLine());
            if (a1 == 0 || b1 == 0) Console.WriteLine("знаменатель не может равняться 0!");
                 else
            {
                drob d1 = new drob(a, a1);
                drob d2 = new drob(b, b1);
                drob d = d1 * d2;
                Console.WriteLine("умножение="+d.ToString());
                Console.ReadLine();
            }
        }
    }
}
 
[COLOR="DarkRed"]drob.cs[/COLOR]
class drob
    {
        int a;
        public int A
        {
            get
            {
                return a;
            }
            set
            {
                a = value;
            }
        }
        int b;
        public int B
        {
            get
            {
                return b;
            }
            set
            {
                b = value;
            }
        }
        public drob(int a, int b)
        {       a = this.a;
            b = this.b;
 
        }
        public  override string ToString()
        {
            return "\n"+a.ToString() + "\n" + "--" + "\n" + b.ToString();
        }
        public static  drob operator * (drob d1, drob d2)
        {
            return new drob(d1.A * d2.A, d1.B * d2.B);
        }
 
    }                         
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2011, 06:41
Ответы с готовыми решениями:

Класс: Обыкновенная дробь
Доброго времени суток!!! Прошу помощи :cry: Ничего не понимаю, задали задачу, помогите решить пожалуйста!!!! Если можно с комментариями,...

Создать класс TFaction (обыкновенная дробь)
Создать класс TFaction. В классе описать следующие элементы: •поля- числитель и знаменатель; • конструктор без параметров, конструктор...

Создать класс Fraction (обыкновенная дробь).
Не сочтите за наглость,знаю,что должно быть стыдно тако епросить,но нету времени самому писать,а проблемы с синтаксисом у меня имют место...

5
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
23.11.2011, 07:20
Неверно сделан конструктор класса drob.
Вы пишите:
C#
1
2
3
4
5
        public drob(int a, int b)
        {       a = this.a;
            b = this.b;
 
        }
a, b - локальные переменные и глобальные переменные одновременно. Вы правильно сделали, что указали this, чтобы компилятор знал что из них локальное, а что глобальное, только вот надо в операторе присваивания поменять операнды местами.
C#
1
2
this.a = a;
this.b = b;
Перегрузка оператора умножения сделана правильно, а 0 Вы получали сразу на этапе конструктора.
1
 Аватар для NadyaS
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 26
24.11.2011, 04:35  [ТС]
подскажите ещё, как записать сложение (с условием при разных/одинаковых знаменателях)........
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
24.11.2011, 20:10
Самое простое - вот так:
C#
1
2
3
4
            public static drob operator +(drob d1, drob d2)
            {
                return new drob(d1.a * d2.b + d2.a * d1.b, d1.b * d2.b);
            }
Сокращение уже немного другая задача...
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
24.11.2011, 22:28
Для сокращенной записи нужно использовать NOD (наибольший общий делитель);
NOD от 2х чисел
C#
1
2
3
4
5
6
7
8
int NOD(int a, int b) 
{     while (a * b != 0) 
            if (a >= b) 
                  a %= b; 
            else 
                  b %= a; 
 return a + b;
}
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
24.11.2011, 23:20
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
/// <summary>
/// Дродь
/// </summary>
class Fraction
{
    public Fraction()
    {
        this.Denominator = 0;
        this.Numerator = 0;
    }
    public Fraction(int numerator, int denomirator)
    {
        this.Numerator = numerator;
        this.Denominator = denomirator;
    }
    
    /// <summary>
    /// Числитель
    /// </summary>
    public int Numerator
    {
        get;
        set;
    }
    /// <summary>
    /// Знаменаьель
    /// </summary>
    public int Denominator
    {
        get;
        set;
    }
 
    public static Fraction operator +(Fraction left, Fraction rigth)
    {
        return new Fraction(left.Numerator * rigth.Denominator + rigth.Numerator * left.Denominator,
            rigth.Denominator * left.Denominator);
    }
    public static Fraction operator -(Fraction left, Fraction rigth)
    {
        return new Fraction(left.Numerator * rigth.Denominator - rigth.Numerator * left.Denominator,
            rigth.Denominator * left.Denominator);
    }
    public static Fraction operator *(Fraction left, Fraction right)
    {
        return new Fraction(left.Numerator * right.Numerator, right.Denominator * left.Denominator);
    }
    public static Fraction operator /(Fraction left, Fraction right)
    {
        return new Fraction(left.Numerator * right.Denominator, left.Denominator * right.Numerator);
    }
    public override string ToString()
    {
        return ((double)this.Numerator / (double)this.Denominator).ToString();
    }
 
    int NOD(int a, int b)
    {
        while (a * b != 0)
            if (a >= b)
                a %= b;
            else
                b %= a;
        return a + b;
    }
    /// <summary>
    /// Сократить дробь
    /// </summary>
    public void Reduce()
    {
        int nod = NOD(this.Numerator, this.Denominator);
        this.Numerator /= nod;
        this.Denominator /= nod;
    }
}
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
class Program
{
    static void Main(string[] args)
    {
        Fraction f1 = new Fraction(1, 2);
        Fraction f2 = new Fraction(1, 3);
        Console.WriteLine(f1 + f2);
        Console.WriteLine(1.0 / 2.0 + 1.0 / 3.0);
        Console.WriteLine(f1 - f2);
        Console.WriteLine(1.0 / 2.0 - 1.0 / 3.0); 
        Console.WriteLine(f1 * f2);
        Console.WriteLine(1.0 / 2.0 * 1.0 / 3.0);
        Console.WriteLine(f1 / f2);
        Console.WriteLine((1.0 / 2.0) / (1.0 / 3.0));
 
        Fraction fracion = new Fraction(3, 9);
        Console.WriteLine(fracion);
        fracion.Reduce();
        Console.WriteLine(fracion);
 
        Console.ReadKey(true);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2011, 23:20
Помогаю со студенческими работами здесь

Написать класс обыкновенная дробь. Поля класса - числитель и знаменатель
Реализовать функции: Конструктуры (по умолчанию и инициализации),свойства,методы сравнения двух дробей и вывода в виде десятичной дроби....

Создать базовый класс с двумя целыми полями и два производных: «Обыкновенная дробь» и «Прямоугольник»
Создать базовый класс с двумя целыми полями. Разработать два конструктора: первый – без параметров – заполняет поля случайными данными;...

Создать любое событие в классе "обыкновенная дробь"
Создать любое событие в классе ОБЫКНОВЕННАЯ ДРОБЬ Добавлено через 10 часов 9 минут например, чтоб ноль нельзя было вводить.... ...

Создание класса "обыкновенная дробь"
Класс: обыкновенная дробь; Члены класса: Числитель и знаменатель; Методы: Конструктор, деструктор, возведение дроби в степень, метод...

класс "обыкновенная дробь"
Создать класс &quot;обыкновенная дробь&quot;, поля класса-числитель и знаменатель. Методы класса: определение обратной дроби, вывод дроби. В классе...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru