42545

Разработать Windows Forms приложение - программу-калькулятор дробей

Лабораторная работа

Информатика, кибернетика и программирование

не имеют общих делителей то дробь называется несократимой; любая дробь может быть представлена к несократимой если её числитель сократить на их наибольший общий делитель Hog наибольшее натуральное число на которое они оба делятся без остатка; две любые дроби b и c b считаются равными если d=bc; две несократимые дроби считаются равными если равны их числители и знаменатели =c и b=d. Умножение: W W'={U U'V V'} W=U d1V d2 и W'=U' d2V' d1 где d1=HogUV' и d2=HogU' V. Деление: W W'={U U' V...

Русский

2013-10-30

44 KB

17 чел.

Задание 3.

Разработать Windows Forms приложение -  программу-калькулятор дробей: fc(fraction calculator), который обеспечивает выполнение арифметических операций (сложение, вычитание, умножение и деление) для рациональных дробей, заданных в символическом формате. Программа fc должна быть ориентированна на использование следующего формата дробей: a/b, где a и b наборы цифр, отображающие числитель и знаменатель дроби.

На форме предусмотреть отображение дробей, используя необходимые элементы управления, предусмотреть также их редактирование т проверку на корректность ввода данных.

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


  Исходными данными программы fc являются последовательности символов, представляющие вычисляемые арифметические выражения, где дробные операнды связывает символ операции(+, -, *, /). Дробные операнды и символ операции должны передаваться программе fc, через определенные элементы управления..
  Результатом работы программы fc должно быть дробное число, которое представляет итог вычисления входного выражения и отображается в соответствующем элементе управления. Для некоторых операций и операндов должен быть предусмотрен вывод соответствующих информационных сообщений диагностики. В программе предусмотреть обработку исключительных ситуаций.

  Программа fc должна быть составлена в системе программирования C#.

Свойства дробных чисел.

  В некоторых алгоритмах численной обработки данных более полезным является точное выражение результата в виде дроби (например, 1/3), чем приближенное представление с плавающей точкой (0,33333...). Использование дробей позволяет получить нецелочисленный ответ задачи в наглядной форме и исключить ошибку округления, свойственные обработке чисел с плавающей точкой в ограниченной разрядной сетке.
  Как известно, дробное число образует отношение 2-х целых чисел, которое записывается следующем образом: a/b, где a и b - наборы цифр, представляющие числитель и знаменатель дроби. Относительно числителя и знаменателя дроби приняты следующие договоренности:
  - знаменатель дроби должен быть натуральным числом (b>0);

- целое число можно представить дробью с единичным знаменателем (a/1);

- знак дроби определяется знаком числителя;

- если числитель и знаменатель дроби умножить на одно и тоже натуральное число (N), то получиться дробь   равная данной (a/b=(N*a)/(N*b));

- если числитель и знаменатель дроби имеют общий делитель, то при делении их на него происходит сокращение дроби и образуется дробь равная данной
     ((D*a)/(D*b)=a/b);

- если числитель и знаменатель взаимно-простые числа, т. е. не имеют общих делителей, то дробь называется несократимой;

- любая дробь может быть представлена к несократимой, если её числитель сократить на их наибольший общий делитель (Hog) - наибольшее натуральное число, на которое они оба делятся без остатка;

- две любые дроби a/b и c/b считаются равными, если (a*d)=(b*c);

- две несократимые дроби считаются равными, если равны их числители и знаменатели (a=c и b=d).

Вычислительная обработка дробных чисел основана на использовании 4-х арифметических операций: сложение, вычитание, умножение и деление. Для выполнения этих операций символическое представление дроби выражается парой целых чисел, соответствующих её числителю и знаменателю. Пусть U/U' и V/V' обозначают дроби-операнды, а W/W'-дроби, результат операции. Тогда числитель и знаменатель результирующей дроби для 4-х арифметических операций выражают следующие соотношения:

 1. Умножение: (W/W')={(U/U')*(V/V')}
    W=(U/d1)*(V/d2) и W'=(U'/d2)*(V'/d1),
    где d1=Hog(U,V') и d2=Hog(U'/V).
 2. Деление: (W/W')={(U/U')/(V/V')}
    W=(U/d1)*(V'/d2)sign(V) и W'=|(U'/d2)*(V/d1)|,
    где d1=Hog(U,V) и d2=Hog(U',V').
 3. Сложение: (W/W')={(U/U')+(V/V')}
    а. Если Hog(U'/V')=1,то
       W=(U*V')+(U'*V) и W'=(U'*V')
    б. Если Hog(U'/V')>1,то
       W=t/d2 и W'=(U'/d1)*(V'/d2),
       где d1=Hog(U',V'), t=U*(V'/d2)+V*(U'/d1) и d2=Hog(t,d1).
 4. Вычитание: (W/W')={(U/U')-(V/V')}

    Выполняется аналогично сложению, если везде заменить знак плюс на знак  минус.
  В приведенных соотношениях Hog(m,n) обозначает наибольший общий делитель чисел |m| и |n|. Для эффективного вычисления Hog применяется алгоритм Евклида - самый старый нетривиальный алгоритм, доживший до наших дней. В современной редакции псевдокод алгоритма Евклида выглядит следующим образом:

     IF m<0 THEN
        m <- |m|;  /* перейти к абсолютной величине числа m */
     IF n<0 THEN
        n <- |n|;  /* перейти к абсолютной величине числа n */
     WHILE n<>0 { /* цикл уменьшения n */
      r <- m mod n; /* остаток деления m на n */
      m <- n;
      n <- r;
      }
     RETURN m.

  В классическом варианте алгоритм Евклида используется для поиска наибольшего общего делителя пары не отрицательных целых чисел, при условии, что Hog(0,0) принимается равным 0. Для расширения области применения на поле произвольных целых чисел в предлагаемой версии алгоритма Евклида предусмотрен переход к абсолютным величинам рассматриваемых чисел. На каждом шаге основного цикла алгоритма Евклида происходит последовательное уменьшение обоих чисел, но при этом значение их наибольшего общего делителя остается неизменным, т. к.:

  Hog(m,n)=Hog(n,m-r*n).

  Цикл уменьшения обоих чисел продолжается, пока на очередной итерации меньшее из чисел не станет равным 0. В этом случае большее из чисел принимается за наибольший общий делитель исходной пары, т. к.:

Hog(m,0)=0.
 Например, Hog(259,111) выполняется за 3 шага:

 Hog(259,111)=Hog(111,37)=Hog(3,0)=3.

  Сложность алгоритма Евклида пропорциональна логарифму от максимального по абсолютной величине числа из рассматриваемой пары чисел. эффективность алгоритма Евклида определяет эффективность выполнения арифметических операций над дробями по соотношениям, определенным выше.

  На первый взгляд кажется, что арифметические операции над дробями можно реализовать более эффективно, вычисляя наибольший общий делитель в каждой операции только один раз вместо двух. Например, при умножении {(U/U')*(V/V')}, числитель и знаменатель ответа можно получить по внешне более простым формулам:

  W=(U*V)/d и W'=(U/U')/d,

где d=Hog(U*V,U'*V').

  При сложении 2-х дробей {(U/U')+(V/V')} можно представить результат в виде следующей дроби:

  (U*V'+V*U')/(U'*V'),

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

Hog(U*V'+V*U',U'*V').

  Однако, в обоих случаях придется оперировать с относительно большими числами на каждой итерации алгоритма Евклида. Каждая итерация будет выполнятся медленнее, чем код на в ней рассматриваются меньшие числа, которые характерны для операций обработки дробей с 2-мя вычислениями наибольшего общего делителя. Таким образом, по быстродействию оба подхода по-крайней мере равнозначны, но в первом исключена возможность переполнения разрядной сетки, что является решающим преимуществом, когда числители и знаменатели дробей являются большими числами.

Контрольные задания.

  1. Расширить программный код перегрузкой операции присваивания (=), в которой должно быть реализовано копирование числителя и знаменателя, а также приведение результирующей дроби к несократимому виду, если это необходимо.
  2. Расширить программный код перегрузкой операции проверки равенства 2-х  дробей (==).
  4. Усовершенствовать представление результата операций с дробями, так чтобы в случае, когда числитель больше знаменателя, выделялась целая часть числа.
  5. Разработать средства контроля достоверности результатов операций с дробными числами. Например, сложение дробей должно проверяться вычитанием, а умножение - делением.
  6. Реализовать операции сложения и вычитания с помощью приведения дробей к общему знаменателю. Для вычисления наименьшего общего кратного (Hok) знаменателей дробей, которое необходимо в этом случае, рекомендуется использовать следующее соотношение:

            U'*V'=Hog(U',V')*Hok(U',V').

Рекомендуемая литература.

  1. Д. Кнут
     Искусство программирования для ЭВМ, т.2 Получисленные алгоритмы - М.,
     Мир, 1977 г.

PAGE  1


 

А также другие работы, которые могут Вас заинтересовать

79730. Учет долгосрочных и краткосрочных финансовых вложений 100.5 KB
  Учет долгосрочных и краткосрочных финансовых вложений Понятие ценных бумаг Приобретение ценных бумаг Доведение покупной стоимости до номинала Увеличение размера уставного капитала АО в связи с увеличением номинальной стоимости акций Резервы под обесценение вложений в ценные бумаги Доходы по ценным бумагам Учет реализации погашение выбытие Учет операций с векселями 1. Понятие ценных бумаг В соответствии с действующим законодательством ценная бумага это документ удостоверяющий при соблюдении установленной формы и обязательных...
79731. Учет долгосрочных инвестиций 81.5 KB
  Долгосрочные инвестиции предприятия связаны с осуществлением капитального строительства в форме нового строительства а также реконструкции и технического перевооружения действующих предприятий и объектов непроизводственной сферы с приобретением зданий сооружений оборудования и других отдельных объектов основных средств с приобретением земельных участков и объектов природопользования с приобретением и созданием объектов нематериального характера. Для выполнения строительномонтажных работ подрядным способом предприятие заключает договор...
79732. Учет затрат на производство и калькулирование себестоимости продукции 105.5 KB
  Учет затрат на производство и калькулирование себестоимости продукции Задачи учета затрат на производство и калькулирование себестоимости продукции. Варианты учета затрат. Характеристика учет и распределение затрат вспомогательных производств. Методы учета затрат на производство продукции и калькулирование себестоимости продукции.
79733. Учет издержек обращения 60 KB
  Учет издержек обращения Задачи и классификация издержек обращения Учет транспортных расходов Учет расходов связанных с товарными запасами Учет расходов связанных с основными средствами Учет расходов на оплату труда и социальные нужды. Учет издержек обращения относящихся к реализованным товарам Задачи и классификация издержек обращения Издержки обращения – это затраты материальных денежных и трудовых ресурсов связанные с переводом товаров из сферы производства в сферу потребления. Издержки обращения относятся к категории затрат...
79734. Учет реализации товаров в организации оптовой торговли 43 KB
  Учет реализации товаров в организации оптовой торговли Формы оптовой реализации товаров Учет реализации в момент оплаты товаров. Учет реализации в момент отгрузки товаров. Учет реализации товаров транзитом Формы оптовой реализации товаров Различают две основные формы оптовой реализации товаров: реализация товаров со складов складской оборот; реализация товаров транзитом транзитный оборот. Реализация товаров транзитом в свою очередь применяется как с участием так и без участия оптового предприятия в расчетах.
79735. Учет собственного капитала 46.5 KB
  Учет собственного капитала Учет уставного капитала. Учет резервного капитала Учет добавочного капитала Учет уставного капитала Собственный капитал состоит из уставного капитала добавочного и резервного капитала резервных фондов и нераспределенной прибыли. Для характеристики той чисти собственного капитала размер которой указывается в учредительных документах используют понятие уставный капитал складочный капитал уставный фонд паевой фонд. Все эти виды собственного капитала учитываются на счете 85 Уставный капитал. Сальдо этого...
79736. Учет товарных потерь 52.5 KB
  Учет товарных потерь Нормируемые и ненормируемые потери Взаимозачет недостатков одних товаров излишками других Отражение в учете сумм недостач хищений и потерь от порчи ценностей Учет товарных потерь вследствие естественной убыли Товарные потери при транспортировке Нормы естественной убыли на складах Резерв на списание естественной убыли Нормируемые и ненормируемые потери Товарные потери возникают при транспортировке хранении и отпуске товаров. К ненормируемым относятся потери от боя брака и порчи товаров а также потери по...
79737. Учет финансовых результатов 93.5 KB
  Учет прибыли убытков предприятия. Распределение прибыли. Учет прибыли убытков предприятия Финансовый результат хозяйственной деятельности предприятия определяется показателем прибыли или убытка формируемым в течение календарного хозяйственного года. Формирование итогов годового финансового результата осуществляется накопительным путем в течение всего года на счете 80 Прибыли и убытки виде его свернутого остатка отражающего либо прибыль по кредиту счета либо убыток по дебету счета.
79738. Бухгалтерский учет банковских кредитов 106 KB
  Любое предприятие, получив в банке кредит, должно, во-первых, правильно выбрать источник списания затрат на оплату процентов за пользование ссудой, и во-вторых, достоверно отразить в учете и отчетности сумму возникшего перед банком обязательства.