Розробка калькулятора для інженерних розрахунків

 

КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА

ОПТИКО-МЕХАНІЧНИЙ КОЛЕДЖ

Циклова комісія спеціальних дисциплін спеціальності

.05010301 «Розробка програмного забезпечення» та математики










КУРСОВА РОБОТА

з дисципліни «Інструментальні засоби візуального програмування»

на тему: «Розробка калькулятора для інженерних розрахунків»




Студент 3-го курсу групи ПР-31

напряму підготовки 050103

«Програмна інженерія»

спеціальності 5.05010301

«Розробка програмного забезпечення»

Крикун Владислав Валерійович




м. Київ - 2014 рік

Зміст


Реферат

Перелік скорочень, умовних позначень, символів, одиниць і термінів

вступ

Розділ 1. Загальна частина

1.1 Постановка задачі

.2 Характеристика апаратно-програмної частини

.3 Опис мови і середовища програмування

.4 Опис предметної області і напрямків дослідження

Розділ 2. Реалізація системи

2.1. Розробка алгоритму і його опис

.2 Розробка інтерфейсу користувача

.3 Інструкція роботи користувача з системою

.4 Керівництво програміста

Висновки

Список літератури

додатки


Реферат


Ключові слова:КАЛЬКУЛЯТОР, ГРАДУСИ, РАДІАНИ,МАСИВ.

Як об'єкт дослідження в курсовій роботи виступають «математичні розрахунки», а предметом дослідження - «інженерний калькулятор».

Мета дослідження: розробити систему «Розробка застосування інженерний калькулятор» для автоматизації наочної роботи викладачів, студентів ВНЗ, а саме для важких розрахунків з використанням тригонометричних функцій, логарифмів та інше.

Завдання дослідження:

)розглянути основні математичні методи вирішення рівнянь, прикладів;

)дізнатися про різні способи отримання і перевірки результату

)провести обстеження і аналіз отриманого результату;

Практична значущість роботи полягає в тому, що результати даного дослідження можуть бути використані безпосередньо в практиці.


Перелік скорочень, умовних позначень, символів, одиниць і термінів


ІК - інженерний калькулятор.

ПО - предметна область.

ЕМ- елементи масиву.

компютер delphi програміст алгоритм


Вступ


Актуальність теми дослідження полягає в тому, що отримання результату вирішення (логарифмів, тригонометричних функцій, знаходження мінімальних/максимальних елементів масиву, виведення результату в градусах/радіанах)- входить в курс вивчення Алгебри, Геометрії, Математичного аналізу, Математичних методів та інше.

Інженерний калькулятор - неймовірно важливе і ефективний засіб, коли ви вивчаєте математику просунутого рівня, але на перший погляд він може здатися китайською грамотою.

Інженерний калькулятор дозволяє робити складні розрахунки із застосуванням різних тригонометричних функцій: синуса, косинуса, тангенса, котангенса. Калькулятор дозволяє зводити числа в ступінь, обчислювати логарифм числа.

Основні команди (цифри, множення, ділення, додавання, віднімання, рівність, скидання) можна вводити як за допомогою мишки, так і за допомогою цифрової клавіатури (верхній або бічній).

Курсова робота складається з вступу, двох розділів, висновків, списку джерел та додатків.

У першому розділі: розглядаються основні математичні поняття , розглянуті різні підходи вирішення поставлених завдань, виділені і розглянуті основні етапи написання курсової роботи, проводиться обстеження і аналіз предметної області, обґрунтовується вибір архітектури для автоматизації наочної шахістів.

У другому розділі: наводиться опис розробки та впровадження застосування «Інженерний калькулятор» і розробляється інструкція користувача з експлуатації розробленої програми.


Розділ 1. Загальна частина


.1 Постановка задачі


Проблемна ситуація виникає щоразу, коли має місце громіздкі функції/рівняння.

Виявлення та формулювання проблемної ситуації є одним з найбільш складних і відповідальних етапів процесу передпроектного обстеження організації. Чітке формулювання наявної проблемної ситуації є найбільш важливою сходинкою у вирішенні самої проблеми.

У реальних умовах розрахунки тригонометричних функції/рвіннь чи масивів безліч проблем. Необхідно виділити основні, первинні проблеми. Усунення первинних проблем завжди сприяє усуненню багатьох другорядних, вторинних проблем.

Виявлені проблеми, властиві обстеженій предметній області, представлені в таблиці 1.1.


Таблиця 1.1 - Проблемні ситуації в шаховій грі

Найменування проблемної ситуаціїЗасоби рішенняВажкість реалізації вирішення великих за обсягом та важкістю прикладівСтворення відповідного оптимального алгоритмуВелика кількість затрати часу для вирішення та перевірки отриманого результатуПідвищення ефективностіНеобхідність знаходити оптимальний алгоритм вирішення поставленого завданняАвтоматизація (машинне вирішення)

Все вищевикладене дозволяє зробити головний висновок, що для розвязання важких прикладів необхідний потужний програмний продукт, який буде виконувати всі перераховані вище завдання.

Оскільки ІК має безліч функцій, то для цього необхідно було виконання додаткових завдань:

)запамятовування отриманого результату;

)вибір користувачем отримання результату (в радіанах чи в градусах);

)знаходження максимального/мінімального елементу масивів;

)можливість видалення введених даних;

)розрахунок важких тригонометричних функцій;

)введення числа у степінь;

)знаходження факторіалу числа;

)знаходження логарифму;

)можливість введення дробу;


.2 Характеристика апаратно-програмної частини


Програма даної курсової роботи розроблялась на компютері з наступною апаратною і програмою конфігурацією (Таблиця 1.2).


Таблиця 1.2 - Програмно-апаратна характеристика компютера

ХарактеристикиЗначенняАпаратна конфігураціяТип центрального процесораIntel Pentium E5200 2,5 GHz (socket 775)Чіпсет системної платиGigaByte GA-P31-DS3LСистемна память2 x 2048 Мб (800 MHz DDR2)Тип BIOSAward Modular Bios v6.OOPGВідеоадаптерGeForce 9800GT (512 Mb)Жорсткий дискWesternDigital (640 Gb, 5400 RPM, SATA 2)Програмна конфігураціяОпераційна системаMicrosoft Windows 7 UltimateВерсія ОС6.1.7601 (RTM)Тип ядра ОС64-bitПакет оновленняService Pack 1Середовище програмуванняEmbarcadero RAD StudioВерсія середовища програмуванняXE4

1.3 Опис мови і середовища програмування


Embarcadero ® RAD Studio XE6 - повномасштабне рішення для розробки «нативних» застосувань для Windows, Mac, Android і iOS на основі єдиної бази вихідних кодів. Застосування можуть отримувати доступ до платформних API, датчиків та сервісів, забезпечуючи найкращий рівень взаємодії користувача, оскільки підтримують CPU і GPU.Studio збільшує продуктивність розробників в кілька разів, дозволяючи команді створювати «нативні» програми для ПК, планшетів, смартфонів і навіть гаджетів типу Google Glass на основі єдиного вихідного коду в рекордні терміни. Ця унікальна комбінація технологій розробки під різні платформи з генерацією «нативних» кодів означає, що швидке створення додатків без використання скриптових мов або віртуальних машин. Створювані додатки будуть виключно продуктивні.

Середовище дозволяє модернізувати Windows-програми за рахунок нових компонентів для роботи з апаратними датчиками і додати їм вид Windows7/8 за рахунок нових стилів VCL і компонентів для панелі завдань. Розширення функціональності Windows-застосувань на основі VCL легке за рахунок зв'язку їх з мобільними додатками і додатками на гаджетах за допомогою компонентів забезпечення взаємодії. Нові компоненти для взаємодії застосування (App Tethering) дозволяють доповнити наявні Windows VCL застосування функціоналом для мобільної роботи без необхідності перенесення програми вцілому. Розробники можуть створювати мобільні застосування як доповнення до існуючих систем, розробленим під Windows.

Тепер в середовищі можна створювати 64-розрядні програми для Windows за допомогою Delphi і C+, щоб отримати всі переваги найсучаснішого апаратного забезпечення, використовувати великі обсяги пам'яті і досягти максимум продуктивності. Усі технології для розробки під Windows підтримують 64-розрядну архітектуру, включаючи VCL, FMX, RTL, компілятори і відладники. Це дозволяє спростити міграцію існуючих VCL-програм на 64-розрядну Windows.

Рішення спрощує використання всіх можливостей і стилів ОС Windows 7 або Windows 8. , забезпечуючи безболісний перехід від непідтримуваної більше Windows XP до даних операційних систем. За допомогою RAD Studio XE6 розробники можуть модернізувати VCL застосування Windows - взаємодіяти з багато віконними програмами за допомогою нових компонентів панелі завдань Windows , надати їм сучасний вигляд в стилі Windows 7 і Windows 8.1 або навіть власний дизайн, повністю управляти стилями зовнішнього подання програм, включаючи меню і границі вікна.

Також є можливість застосувати оновлені стилі до границь вікон Windows і меню, використовувати власні стилі для додання унікального стилю та створення нового дизайну. Стилі застосовуються до вже існуючих компонентів і елементів інтерфейсу, тому легко відновити дизайн без заміни компонентів. Можна обрати один з готових професійних стилів для оновлення інтерфейсу або використовувати дизайнер стилів користувача для створення власного.


Рисунок 1.1 - Структура FireDAC

Studio тепер включає FireDAC - високопродуктивну бібліотеку універсального доступу до даних для розробки застосувань для різних пристроїв, що взаємодіють з базами даними масштабу підприємства. FireDAC забезпечує прямий високошвидкісний доступ з Dephi до InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL Anywhere, Advantage DB, Firebird, Access, Informix і багатьом іншим.

Підтримується інтеграція з хмарними сервісами від постачальників Back-end as a Service ( BaaS ), Kinvey і Parse, за рахунок готових компонентів. Ви зможете використовувати сервіси нотифікації, управління користувачами і зберігання. Для цього не знадобиться створювати власні сервіси або забезпечувати їх підтримку. З легкістю можна додати призначену для користувача автентифікацію до ваших програм, використовувати нотифікацію для залучення ваших користувачів, отримати доступ до даних і сховищ об'єктів «в хмарах». Бібліотека REST Client Library доступна для всіх платформ і спрощує виклик web-сервісів REST сторонніх постачальників.

За допомогою технології LiveBindings кожен компонент може взаємодіяти з даними. LiveBindings забезпечує простий механізм для зв'язування елементів управління інтерфейсу користувача з властивостями об'єктів і полями наборів даних. Візуальний дизайнер допомагає створювати зв'язки між даними і елементами інтерфейсу користувача, просто «рисуючи» лінії між властивостями компонентів. LiveBindings спрощує зв'язування даних і елементів інтерфейсу на основі інтуїтивно-зрозумілих маніпуляцій.

За допомогою RAD Studio команда може одночасно прототипувати і розробляти застосування на основі стандарту C++ або мови Object Pascal для різних пристроїв одночасно. Це означає, що у вас не буде різнорідних проектів з різними графіками виконання, а бюджети не потрібно буде розділяти між різними командами, що використовують різні інструменти, мови і бібліотеки для кожної апаратної платформи.

За допомогою платформи застосувань для різних пристроїв в RAD Studio можна створювати дійсно взаємодіючі з даними рішення. Програми забезпечать доступ в режимі реального часу до корпоративних даних і хмарних сервісів.

Рисунок 1.2 - RAD Studio Multi-Device Application Platform


Delphi - імперативна, структурована, об'єктно-орієнтована мова програмування, діалект Object Pascal. Починаючи з середовищв розробки Delphi 7.0, в офіційних документах Borland стала використовувати назву Delphi для позначення мови Object Pascal. Починаючи з 2007 року вже мова Delphi (похідна від Object Pascal ) почала жити своїм самостійним життям і зазнавала різні зміни, пов'язані з сучасними тенденціями (наприклад, з розвитком платформи .NET) розвитку мов програмування: з'явилися class helpers, перевантаження операторів та інше.

Спочатку середовище розробки Delphi було призначена виключно для розробки застосувань Microsoft Windows, потім був реалізований варіант для платформ Linux, однак після випуску в 2002 році Kylix 3 його розробка була припинена, і незабаром було оголошено про підтримку Microsoft .NET, яка, в свою чергу, була припинена з виходом Delphi 2007.

Незалежна, стороння реалізація середовища розробки проектом Lazarus (Free Pascal, компіляція в режимі сумісності з Delphi ) дозволяє використовувати його для створення застосувань на Delphi для таких платформ, як Linux, Mac OS X і Windows CE.

При створенні мови, не ставилося завдання забезпечити максимальну продуктивність виконуваного коду або лаконічність вихідного коду для економії оперативної пам'яті. Спочатку, мова ставила в основу стрункість і високу читаємість, оскільки була призначена для навчання дисципліні програмування. Ця початкова стрункість, надалі, як по мірі зростання апаратних потужностей, так і в результаті появи нових парадигм, спростила розширення мови новими конструкціями.

Так, складність об'єктного C++, в порівнянні з C, зросла вельми істотно і ускладнила його вивчення в якості першої мови програмування, чого не можна сказати про Object Pascal щодо Pascal .

Нижче перераховані деякі відмінності синтаксичних конструкцій Delphi від сімейства C-подібних мов (C/C++/Java/C#):

·У Delphi формальний початок будь-якої програми чітко відрізняється від інших ділянок коду, і розташований в певному, єдиному в рамках проекту, вихідному файлі з розширенням dpr (тоді як інші файли вихідних текстів програми розташовані у файлах з раширением pas). У С-подібних мовах програмування у якосты входу зазвичай використовується глобальна функція або статичний метод з ім'ям main і певним списком параметрів, причому така функція може бути розташована в будь-якому з файлів вихідного тексту проекту.

·У Delphi ідентифікатори типів, змінних і ключові слова читаються незалежно від регістру: наприклад ідентифікатор SomeVar повністю еквівалентний somevar. Регістрозалежні ідентифікатори на початку комп'ютерної епохи прискорювали процес компіляції, і крім того, дозволяли використовувати дуже короткі імена. І хоча до теперішнього часу обидві ці практики, використання декількох ідентифікаторів, що розрізняються лише регістром, так само як і надмірна їх лаконічність, засуджені і не рекомендовані до застосування, практично всі успадковані від С мови, C++, Java, C# є регістрозалежними, що, з одного боку вимагає досить великої уважності до оголошення та використання ідентифікаторів, а з іншого, допускається написання коду у вельми важкому стилі.

·У Delphi, у вихідних файлах pas (які, як правило, і містять основне тіло програми), на рівні мовних засобів запроваджено суворий поділ на інтерфейсний розділ і розділ реалізації. У інтерфейсній частині містяться лише оголошення типів і методів, тоді як код реалізації в інтефейсної частини не допускається на рівні компіляції. Подібне розділення властиво також мовам C/C++, де умовно, в рамках культури та парадигми програмування вводиться поділ на заголовні і файли реалізації, але подібний поділ не забезпечується на рівні цієї мови або компілятора. У C# і Java такий поділ усунуто зовсім: реалізація методу, як правило, слідує відразу ж після його оголошення. Інкапсуляція забезпечується лише приналежністю методу до тієї чи іншої області видимості. Для перегляду однієї тільки інтерфейсної частини модуля вихідного коду використовуються спеціальні засоби.

·У Delphi метод або функція чітко визначаються зарезервованими для цього ключовими словами procedure або function, тоді як в C-подібних мовах позначається лише дужками.

·У Delphi початок і кінець програмного блоку виділяються ключовими словами begin і end , тоді як в C-подібних мовах програмування для цих цілей використовуються фігурні дужки {}. Таким чином, в Delphi досягається краща читаність коду.

·У Delphi цикли з передумовою і постумовоювідрізняються: кінець циклу з постумовою не можна прийняти за початок циклу з передумовою .

·У Delphi операція присвоєння значення змінної позначається за допомогою двокрапки зі знаком рівності :=, що є запозиченням з математичної нотації. Знак рівності без двокрапки -це оператор перевірки рівності, який повертає булеве значення. Навпаки, у C-подібних мовах оператором присвоювання є знак одинарний знак рівності, а оператором перевірки рівності - подвійний == .

·У Delphi об'єктне і об'єктно-орієнтоване програмування хоч і заохочується, проте не є єдино можливим. Так, припустимо (на відміну від C#) оголошення і використання глобальних або статичних функцій і змінних. Мова C# примусово об'єктна. Глобальні, без прив'язки до класу, функції заборонені. Value-типи, на зразок структур struct, успадковані від загального типу C#, незважаючи на те, що самі по собі вони не можуть бути успадковані (тобто, спадкування структур в C# заборонено). Разом з тим, екземпляри класів C# є неявно-посилальними типами, як і в Delphi.

·Для найбільш гнучкої й ефективної реалізації об'єктно-орієнтованого підходу в Delphi введені два механізму поліморфного виклику: класичний віртуальний, а також динамічний: якщо у випадку класичного віртуального виклику адреси всіх віртуальних функцій міститимуться в таблиці віртуальних методів кожного класу, то в разі з динамічним викликом, покажчик на метод існує лише в таблиці того класу, в якому він був заданий або перекритий.

Кожна написана програма мовою Delphi складається з заголовка програми (program NewApplication;), поля використаних модулів Uses (наприклад, Uses Windows, Messages, SysUtils і т.ін.), який може не входити в саму структуру, а також блоків опису та виконання (починаються складеним оператором begin і закінчуються end.).

Розширення файлів:

·.pas - вихідний код модуля (pascal);

·.dpr - вихідний код проекту (pascal);

·.dproj - вихідний код проекту (xml);

·.dproj.local - вихідний код проекту (xml);

·.dfm - вихідний код форми;

·.dpk - скомпільований пакет;

·.dcu - скомпільований модуль;

·.exe - скомпільоване застосування;

·.res - ресурси;

·.dsk - прив'язки до файлів;

·.identcache - кешування прив'язки до файлів.

1.4 Опис предметної області і напрямків дослідження


У даній курсовій роботі поставлено завдання щодо створення застосування інженерний калькулятор. Розроблена програма повинна автоматизувати вирішення різноманітних важких математичних завдань і бути універсальною. Також програма повинна надавати інформацію про:

-Максимальний/мінімальний елемент масиву;

-Виведення результату в радіанах/градусах;

-Отримання чіткого результату.

Програма повинна мати можливість легко, для користувача-непрофесіонала отримувати результат.


Розділ 2. Реалізація системи


.1 Розробка алгоритму і його опис


Аналіз визначених вище завдань дозволяє виділити об'єкти проектованої системи і, побудувати її функціональну схему в нотації UML (рис. 2.1) - діаграма прецедентів, яка призначена для опису поведінки системи та її функціональності


Рисунок 2.1 - Діаграма прецедентів проектованої системи


Прецедент (на рис. 2.1 позначений у вигляді овалу)- специфікація (набір вимог і параметрів) послідовності дій, які може здійснювати система, що взаємодіє з акторами. Прецеденти призначені для документування функціональних вимог до програмних систем. Прецедент описує деякий цілісний фрагмент поведінки системи, не заглиблюючись у внутрішню структуру. Він описує взаємодію програмної системи з акторами у вигляді послідовності повідомлень.

Актор (на рис. 2.1 графічно позначений «чоловічком») - це множина логічно повязаних ролей, які виконуються при взаємодії з прецедентами або сутностями. Будь-які системи проектуються з розрахунку на те, що в процесі своєї роботи вони будуть використовуватись людьми і/або взаємодіяти з іншими системами. Сутності, з якими взаємодія система в процесі своєї роботи, називаються акторами, причому кожен актор очікує, що система буде вести себе виключно передбаченим чином.


.2 Розробка інтерфейсу користувача


При написанні подібних систем зазвичай використовується метод спадаючого проектування.

Програмна система складається з проекту Project.dpr в який входить 3 модулів: Unit1,Unit2,Unit3(розширення *.pas).

Модулі, що реалізують основні функції, викликаються з основного модуля. Специфікація модулів відображена в таблиці 2.4. Допоміжні модулі використовуються в процесі роботи основного модуля. Ієрархічна підпорядкованість модулів програмного комплексу представлена на рис. 2.3.


Рисунок 2.3 - ієрархія модулів розроблюваної програми


Таблиця 2.4 - Специфікація модулів ІС

МодульПризначенняВхідні даніВихідні даніUnit1Форма математичних розрахунків (головний модуль)Вибір дій користувачемОтримання результатуUnit2Форма для вибору оптимального алгоритмуВибір дій користувачемРезультат дії вибір методуUnit3Форма розрахунків(допоміжна форма)Вибір дій користувачемРезультат дії - отримання результату

2.3 Інструкція роботи користувача з системою


Запуск програмної системи здійснюється з запуску файлу Project1.exe. (рис. 2.4).


Рисунок 2.4 - Інженерний калькулятор


На формі Unit1 передбачено виведення результату в градусах (рис.2.5).


Рисунок 2.5 - отримання результату в градусах


.4 Керівництво програміста


Таблиця 2.5

ХарактеристикаЗначенняНазва програми«Інженерний калькулятор»Версія1.0.0.0АвторКрикунВладиславОтчествоМова програмуванняDelphi (Object Pascal)Рядків коду1246Розмір виконуваного файлу і DLLбез інформація відладника3305560 байтОбєм памяті, що займають глобальні змінні49452 байтОбєм памяті, що займають локальні змінні16384 байтРозмір виконуваного файлу4,7 Mb (4780032 байт)Мінімальні системні вимогиПроцесорIntel Pentium 2 GHzОперативна пам'ять512 MbОпераційна системаMicrosoftWindows XPМісце на жорсткому диску8MbДодатковоКлавіатура, миша

Висновки


У процесі виконання курсової роботі була створена автоматизована система «Інженерний калькулятор», яка дозволить автоматизувати вирішення рівнянь/функцій.

У першому розділі розглянуто теоретичні питання розробки застосування. Розглянуто основні етапи проектування застосування шифру простої перестановки: дослідження предметної області, розробка архітектури системи, виконано проектування та створення системи для автоматизації наочної роботи шахових турнірів. Після обґрунтування необхідності автоматизації визначена загальна архітектура.

Другій розділ роботи містить опис розробки застосування «реалізації інженерного калькулятора», описується створення кнопкової форми в Delphi 7, яка визначає інтерфейс роботи з системою.

Застосування «Інженерний калькулятор» розроблена на основі аналізу основних етапів і технологій шифрування тексту.

Підводячи підсумки проведеного дослідження, можна сказати, що всі поставлені завдання вирішені, отже, головна мета, поставлена в курсовій роботи, досягнута.


Список літератури


1.ГОСТ 19.103-77 ЕСПД. Обозначение программ и программных документов.

2.ГОСТ 19.402-78 ЕСПД. Описание программы.

3.ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению.

4.ГОСТ 34.201-89. Информационная технология. Комплекс стандартов на автоматизированные системы. Виды, комплектность и обозначение документов при создании автоматизированных систем.

5.Климова Л.М. Delphi 7.Основы программирования. Решение типовых задач. Самоучитель. Издание третье. - М.: КУДИЦ- ОБРАЗ, 2006. - 480с.

6.Рубанцев А. Самоучитель Delphi в примерах, играх и программах. -Наука и техника.2011.-672с.

7.Санников Е.В. <#"justify">Додаток А


СПЕЦИФІКАЦІЯ UA.ОМК.620111-05 93

Аркушів 2

ПозначенняНайменуванняПриміткиДокументаціяUA.ОМК.620111-02 81 01-1KURSOVA.docx Пояснювальна запискаUA.ОМК.620111-02 34 01-1HELP.pdf Інструкція користувачаКомпонентиUA.ОМК.620111-02 12 01-1Project1.dpr Текст програмиUA.ОМК.620111-02 12 01-2Unit1.pas Текст програмиUA.ОМК.620111-02 12 01-3Unit2.pas Текст програмиUA.ОМК.620111-02 12 01-4Unit3.pas Текст програмиUA.ОМК.620111-02 13 01-1About.pdf Опис програми

Додаток Б


Текст програми UA.ОМК.620111-05 12


//Основний код проектуProject1;,in 'Unit1.pas' {Form1},in 'Unit2.pas' {Form2},

{$R *.res}.Initialize;.CreateForm(TForm1, Form1);.CreateForm(TForm2, Form2);

Application.Run;.

//головниймодульUnit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus, StdCtrls, ExtCtrls, Buttons, Mask, Math, zoomingRN, XPMan,,clipbrd;= class(TForm) //class(TMemo)

MainMenu1: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;

Panel1: TPanel;: TPanel;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TRadioButton;: TRadioButton;: TCheckBox;: TCheckBox;: TMemo;: TPanel;: TXPManifest;: TPanel;: TPanel;FormCreate(Sender: TObject);RadioButton4Click(Sender: TObject);SpeedButton51Click(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);SpeedButton40Click(Sender: TObject);SpeedButton55Click(Sender: TObject);SpeedButton17Click(Sender: TObject);SpeedButton5Click(Sender: TObject);SpeedButton1Click(Sender: TObject);SpeedButton2Click(Sender: TObject);SpeedButton3Click(Sender: TObject);SpeedButton11Click(Sender: TObject);SpeedButton12Click(Sender: TObject);SpeedButton13Click(Sender: TObject);SpeedButton14Click(Sender: TObject);SpeedButton15Click(Sender: TObject);SpeedButton23Click(Sender: TObject);SpeedButton56Click(Sender: TObject);SpeedButton4Click(Sender: TObject);SpeedButton46Click(Sender: TObject);SpeedButton10Click(Sender: TObject);SpeedButton9Click(Sender: TObject);SpeedButton7Click(Sender: TObject);N8Click(Sender: TObject);N5Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;, glob_check,skob,nev,trig:boolean;

obrazec1,obrazec2:extended;_oper:char;,zn1,zn2,zn: ZReal;

big: int64;,zt1,zt2,pamet:string;,j,i_local,c,meraisch,t,sk: integer;:array [0..1000] of string;:array [0..1000] of char;Unit2;

{$R *.dfm}zr_e (stroka: string): string;n:integer;:=strtozr(stroka);:=ZRToLongInt(zn,-1);:= subzr(zn,zn2);( ComparisonZR(zn1,realtozr(0.0000001))=-1) then:= ZRToLongInt(zn,-1);:=zrtostr(zn);;( ComparisonZR(zn1,realtozr(0.9999))=1) and ( ComparisonZR(zn1,realtozr(1))=-1) then:= ZRToLongInt(zn,1);:=zrtostr(zn);;n:=1 to length(stroka) dostroka[n]='+' then[n-1]:='e';(stroka,n,1);;n:=1 to length(stroka) dostroka[n]='-' then[n-1]:='e';;_e:=stroka;;Rezul2 (q:integer): string;

var d,n,z,r,p:integer;

begin:=0;:=0;i:=1 to q dob[i]='(' then d:=i; i:=d to q dob[i]=')' then:=i;;;[d]:='0'; [z]:='0';((z<>0) and (d<>0)) then begini:=d+1 to z-1 do((a[i]<>'|') and (b[i]='^')) then:=i+1;(a[n]='|') do:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);:=powerzr(zn1,zn2);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;;i:=d+1 to z-1 do(a[i]<>'|') thenb[i] of

'*': begin

n:=i+1(a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=multzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'l': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);:=srtozr(a[i]);:=ZRToLongInt(zn2,-1);:=inttozr(0);(ComparisonZR(zn,zn1)=(-1)){ or (ComparisonZR(zn,zn1)=0))} dо:=sumzr(zn,inttozr(1));:=multzr(zn2,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'h': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);:=strtozr(a[i]);:=ZRToLongInt(zn2,-1);:=inttozr(0);(ComparisonZR(zn,zn1)=(-1)){ or (ComparisonZR(zn,zn1)=0))} do:=sumzr(zn,inttozr(1));:=divzr(zn2,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'/': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);(a[n]<>'0') then:=divzr(zn1,zn2);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';begin rezul2:='Делитьнанульнельзя'; exit; end;;

'm': begin:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);(a[n]<>'0') then:=divzr(zn1,zn2);:=ZRToLongInt(zn1,-1);:=multzr(zn,zn2);:=strtozr(a[i]);:=subzr(zn1,zn);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';begin rezul2:='Делитьнанульнельзя'; exit; end;;

'a': begin:=i+1;

while (a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1); ; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) and strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;;;;i:=d+1 to z-1 do(a[i]<>'|') thenb[i] of

'+': begin n:=i+1

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=sumzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'-': begin n:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=subzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'x': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) xor strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'o': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) or strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;;;;;d=0 ;

rezul2:=a[t];[t]:='|';

end;Rezul (q:integer) : string;

var z,d,n,r,p:integer;

begin:=0;:=0;i:=1 to q dob[i]='(' then d:=i; i:=d to q dob[i]=')' then:=i;;;[d]:='0'; [z]:='0';((z<>0) and (d<>0)) then begini:=d+1 to z-1 do((a[i]<>'|') and (b[i]='^')) then:=i+1;(a[n]='|') do:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);:=powerzr(zn1,zn2);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;;i:=d+1 to z-1 do(a[i]<>'|') thenb[i] of

'*': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=multzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'/': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);(a[n]<>'0') then:=divzr(zn1,zn2);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';begin rezul:='Делитьнанульнельзя'; exit; end;;

'l': begin:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);:=strtozr(a[i]);:=ZRToLongInt(zn2,-1);:=inttozr(0);(ComparisonZR(zn,zn1)=(-1)){ or (ComparisonZR(zn,zn1)=0))} do:=sumzr(zn,inttozr(1));:=multzr(zn2,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'h': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);:=strtozr(a[i]);:=ZRToLongInt(zn2,-1);:=inttozr(0);(ComparisonZR(zn,zn1)=(-1)){ or (ComparisonZR(zn,zn1)=0))} do:=sumzr(zn,inttozr(1));:=divzr(zn2,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'm': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);(a[n]<>'0') then:=divzr(zn1,zn2);:=ZRToLongInt(zn1,-1);:=multzr(zn,zn2);:=strtozr(a[i]);:=subzr(zn1,zn);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';begin rezul:='Делитьнанульнельзя'; exit; end;;

'a': begin:=i+1;

while (a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);;:=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) and strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2)); //a[n]:=Floattostr(Zrtoreal(zn2));

a[i]:='|';;;;;i:=d+1 to z-1 do(a[i]<>'|') thenb[i] of

'+': begin n:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=sumzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'-': begin n:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=subzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'x': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) xor strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'o': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1); ; :=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);;:=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) or strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;;;;;d=0 ;i:=1 to q do((a[i]<>'|') and (b[i]='^')) then:=i+1;(a[n]='|') do:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]);:=powerzr(zn1,zn2);

a[n]:=zr_e(zrtostr(zn2)); //a[n]:=Floattostr(Zrtoreal(zn2));

a[i]:='|';;;i:=1 to q do(a[i]<>'|') thenb[i] of

'*': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=multzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'/': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;(a[n]<>'0') then:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=divzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';else begin rezul:='Делениенанульнельзя'; exit; end;;

'm': begin:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);:=strtozr(a[n]); (a[n]<>'0') then:=divzr(zn1,zn2);:=ZRToLongInt(zn1,-1);:=multzr(zn,zn2);:=strtozr(a[i]);:=subzr(zn1,zn);

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';begin rezul:='Делитьнанульнельзя'; exit; end;;

'a': begin:=i+1;

while (a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1); ; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) and strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'l': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);:=strtozr(a[i]);:=ZRToLongInt(zn2,-1);:=inttozr(0);(ComparisonZR(zn,zn1)=(-1)){ or (ComparisonZR(zn,zn1)=0))} do:=sumzr(zn,inttozr(1));:=multzr(zn2,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'h': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);:=strtozr(a[i]);:=ZRToLongInt(zn2,-1);:=inttozr(0);(ComparisonZR(zn,zn1)=(-1)){ or (ComparisonZR(zn,zn1)=0))} do:=sumzr(zn,inttozr(1));

zn2:=divzr(zn2,inttozr(2));[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;;;i:=1 to q do(a[i]<>'|') thenb[i] of

'+': begin n:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=sumzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'-': begin n:=i+1;

while (a[n]='|') do

begin:=n+1;;:=strtozr(a[i]);

zn2:=strtozr(a[n]);:=subzr(zn1,zn2);[n]:=zr_e(zrtostr(zn2));

a[i]:='|';;

'x': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do :=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1);; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) xor strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2)); //a[n]:=Floattostr(Zrtoreal(zn2));

a[i]:='|';;

'o': begin

n:=i+1;(a[n]='|') do

begin:=n+1;;:='';:='';:='';:=strtozr(a[i]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1); ;:=strtozr(a[n]);:=ZRToLongInt(zn1,-1);(ComparisonZR(zn1,inttozr(0))<>0) do :=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+zt1;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1); ; :=length(zt);:=length(zt1);(obrazec1>obrazec2) then :=obrazec1-obrazec2;r:=1 to trunc(obrazec1) do:='0'+zt1;:=obrazec2-obrazec1;r:=1 to trunc(obrazec1) do:='0'+zt;;:=length(zt);r:=trunc(obrazec1) downto 1 do:= inttostr( strtoint( zt[r]) or strtoint (zt1[r]))+zt2;:=1;j:=0;:=inttozr(0);:=inttozr(1);r:=length(zt2) downto 1 do:=sumzr(zn2,MultZR(zn1,strtozr(zt2[r])));:=multzr(zn1,inttozr(2));;

a[n]:=zr_e(zrtostr(zn2)); //a[n]:=Floattostr(Zrtoreal(zn2);

a[i]:='|';;;;:=a[t];;DestoDr(x2: string;y:integer): string;:string;,x1:extended;:int64;:=strtofloat(x2);:=strtozr(x2);:=ZRToLongInt(zn1,-1);:=abszr(zn1);y of

: begin(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(8));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(8));:= SubZR(zn1,zn2);:=zrtostr(zn2)+str;:=divzr(zn1,inttozr(8));:=ZRToLongInt(zn1,-1);;;

{while (trunc (x)<>0) do:=floattostr(trunc (x) mod 8)+str;:=trunc (x) div 8;;; }

: begin(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(2));:= SubZR(zn1,zn2);:=zrtostr(zn2)+str;:=divzr(zn1,inttozr(2));:=ZRToLongInt(zn1,-1); ;;

: begin(ComparisonZR(zn1,inttozr(0))<>0) do:=divzr(zn1,inttozr(16));:=ZRToLongInt(zn2,-1) ;:=multzr(zn2,inttozr(16));:= SubZR(zn1,zn2);zrtoint(zn2) of

:str:='A'+str;

:str:='B'+str;

:str:='C'+str;

:str:='D'+str;

:str:='E'+str;

:str:='F'+str;str:=zrtostr(zn2)+str;//str:=floattostr(trunc (x) mod 16)+str;;:=divzr(zn1,inttozr(16));:=ZRToLongInt(zn1,-1); ;;;:=str;;TForm1.FormCreate(Sender: TObject);:=false;:=false;:=10;:=false;:=0;.Caption:='';.Text:='0';_check:=True; :=0;i:=1 to 1000 do [i]:='|';[i]:='0';;.Alignment := taRightJustify;.MaxLength := 32;.WantReturns := false;.WordWrap := false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;;TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);(Memo1);(glob_check=true) then memo1.Text:='';key of

'0'..'9': ;

'a'..'z': chr(0);

#8: beginmemo1.Text='' then memo1.Text:='0';_check:=true;;

',': begini:=length(memo1.Text) downto 1 dopos(memo1.Text[i],',')=1 then key:=chr(0);;key:= chr(0);;_check:=false;; }TForm1.SpeedButton17Click(Sender: TObject);meraisch=10 then begin(memo1.Text='0') or (memo1.Text='') then begin memo1.Text:='0,'; end:=0;i:=length(memo1.Text) downto 1 dopos(memo1.Text[i],',')=1 then j:=j+1;(j=0) then memo1.Text:=memo1.Text+',';;_check:=false;;

{if (memo1.Text='0') or (memo1.Text='') then begin memo1.Text:='0,'; end;_check:=false; };TForm1.SpeedButton5Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'6';

glob_check:=false;;TForm1.SpeedButton1Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'7';

glob_check:=false;;TForm1.SpeedButton2Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'8';

glob_check:=false;;TForm1.SpeedButton3Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'9';

glob_check:=false;;TForm1.SpeedButton11Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'4';

glob_check:=false;;TForm1.SpeedButton12Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'5';

glob_check:=false;;TForm1.SpeedButton13Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'1';

glob_check:=false;;TForm1.SpeedButton14Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'2';

glob_check:=false;;TForm1.SpeedButton15Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'3';

glob_check:=false;;TForm1.SpeedButton23Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'0';

glob_check:=false;meraisch=10 then(strtofloat(memo1.Text)=0) then.Text:='0';_check:=true;;;;TForm1.SpeedButton56Click(Sender: TObject);:=false;:=0;.Caption:='';.Text:='0';_check:=True; :=false;:=0;i:=1 to 1000 do [i]:='|';[i]:='0';;;TForm1.SpeedButton4Click(Sender: TObject);meraisch of

: memo1.Text:=DrtoDes(memo1.Text,2);

8: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

end;:=t+1;[t]:=memo1.Text;[t]:='/';(((b[2]<>'0') and ((b[1]<>'+') and (b[1]<>'-')) and ((b[t-1]<>'+')and(b[t-1]<>'-') )) and (skob=false)) then.Text:=rezul(t-1);_check:=true;meraisch of

: memo1.Text:=DesToDr(memo1.Text,2);

8: memo1.Text:=DesToDr(memo1.Text,8);

: memo1.Text:=DesToDr(memo1.Text,16);

end;;TForm1.SpeedButton6Click(Sender: TObject);meraisch of

: memo1.Text:=DrtoDes(memo1.Text,2);

8: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

end;:=t+1;[t]:=memo1.Text;[t]:='*';(((b[2]<>'0') and ((b[1]<>'+') and (b[1]<>'-')) and ((b[t-1]<>'+') and(b[t-1]<>'-') )) and (skob=false)) then.Text:=rezul(t-1);_check:=true;meraisch of

: memo1.Text:=DesToDr(memo1.Text,2);

8: memo1.Text:=DesToDr(memo1.Text,8);

: memo1.Text:=DesToDr(memo1.Text,16);

end;;TForm1.SpeedButton16Click(Sender: TObject);meraisch of

: memo1.Text:=DrtoDes(memo1.Text,2);

8: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

end;:=t+1;[t]:=memo1.Text;[t]:='-';((b[2]<>'0') and (skob=false)) then.Text:=rezul(t-1);_check:=true;meraisch of

: memo1.Text:=DesToDr(memo1.Text,2);

8: memo1.Text:=DesToDr(memo1.Text,8);

: memo1.Text:=DesToDr(memo1.Text,16);

end;;TForm1.SpeedButton32Click(Sender: TObject);:=true;:=t+1;[t]:='(';:=sk+1;.Caption:='(='+inttostr(sk);;TForm1.SpeedButton33Click(Sender: TObject);(sk<>0) then:=sk-1;.Caption:='(='+inttostr(sk);:=t+1;[t]:=')';[t]:=memo1.Text;.Text:=rezul2(t);begin panel3.Caption:=''; MessageBeep(0);;(sk=0) then panel3.Caption:='';;TForm1.RadioButton1Click(Sender: TObject);meraisch of

: memo1.Text:=Destodr(memo1.Text,16);

2: memo1.Text:=Destodr(Drtodes(memo1.Text,2),16);

: memo1.Text:=Destodr(Drtodes(memo1.Text,8),16)

end;memo1.Text='' then memo1.Text:='0';_check:=true;:=16;(radiobutton11.Checked=true) thenClick(radioButton1);(radiobutton10.Checked=true) thenClick(radioButton1);(radiobutton9.Checked=true) thenClick(radioButton1);(radiobutton8.Checked=true) thenClick(radioButton1);.Checked:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;;TForm1.RadioButton3Click(Sender: TObject);meraisch of

: memo1.Text:=DestoDr(memo1.Text,8);

16: memo1.Text:=DestoDr(Drtodes(memo1.Text,16),8);

: memo1.Text:=DestoDr(Drtodes(memo1.Text,2),8);

end;memo1.Text='' then memo1.Text:='0';_check:=true;:=8;(radiobutton11.Checked=true) thenClick(radioButton1);(radiobutton10.Checked=true) thenClick(radioButton1);(radiobutton9.Checked=true) thenClick(radioButton1);(radiobutton8.Checked=true) thenClick(radioButton1);.Checked:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;;TForm1.RadioButton2Click(Sender: TObject);meraisch of

: memo1.Text:=DrtoDes(memo1.Text,2);

8: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

end;_check:=true;memo1.Text='' then memo1.Text:='0';:=10;.Checked:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=true;.Visible:=true;.Visible:=true;.Enabled:=true;;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=false;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;;TForm1.SpeedButton19Click(Sender: TObject);z,n: integer;meraisch of

2: memo1.Text:=DrtoDes(memo1.Text,2);

: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

end;(Sk=0) then begin:=t-1; b[t]:='0'; end;:=t+1;[t]:=memo1.Text; .text:=rezul(t); t:=t-1; _check:=true;MessageBeep(0);meraisch of

: memo1.Text:=DesToDr(memo1.Text,2);

8: memo1.Text:=DesToDr(memo1.Text,8);

: memo1.Text:=DesToDr(memo1.Text,16);

end;meraisch<>10 then(radiobutton11.Checked=true) thenClick(radioButton1);(radiobutton10.Checked=true) thenClick(radioButton1);(radiobutton9.Checked=true) thenClick(radioButton1);(radiobutton8.Checked=true) thenClick(radioButton1);;:=false;;TForm1.SpeedButton39Click(Sender: TObject);

{if (b[t]=')') then:=t+1;[t]:=memo1.Text; [t]:='s';:=true;.Text:=rezul2(t);; }radiobutton6.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ):=strtozr(memo1.Text);:=Arcsinzr(zn1);:=zrtoreal(zn1);.Text:=Floattostr(obrazec1);.Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) then:=strtozr(memo1.Text);:= AsinhZR(zn1);:=zrtoreal(zn1);.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=true)) then:=strtozr(memo1.Text);

zn1:= sinhzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=false)) then:=strtozr(memo1.Text);

zn1:= sinzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;;radiobutton5.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ).Text:=floattostr(180/pi*Arcsin(strtofloat(memo1.Text))).Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) then(strtofloat(memo1.Text)<1) then

begin.Text:='Недопустимое значение'; exit;

end:=strtozr(memo1.Text);:=AsinhZr(zn1);:=zrtoreal(zn1);.Text:=floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=true)) then.Text:=floattostr(sinh(strtofloat(memo1.Text)));((inv.Checked=false) and ( hyp.Checked=false)) then(frac(strtofloat(memo1.Text))=0 )then begin(trunc(strtofloat(memo1.Text))=0) then begin memo1.Text:='0'; exit; end;(trunc(strtofloat(memo1.Text))=90) then begin memo1.Text:='1';exit end;(trunc(strtofloat(memo1.Text))=270) then begin memo1.Text:='-1';exit end;(trunc(strtofloat(memo1.Text))=180) then begin memo1.Text:='0';exit end;(trunc(strtofloat(memo1.Text)) mod 360=0) then begin memo1.text:='0';exit end;(trunc(strtofloat(memo1.Text)) mod 360=90) then begin memo1.text:='1';exit end;(trunc(strtofloat(memo1.Text)) mod 360=180) then begin memo1.text:='0';exit end;;:=strtozr(memo1.Text);:=DegToRadZR(Zn1);:=sinzr(zn1);

obrazec1:=zrtoreal(zn1);.Text:=floattostr(obrazec1);

end;;radiobutton7.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ).Text:=floattostr(200/pi*Arcsin(strtofloat(memo1.Text))).Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) then.Text:=floattostr(Arcsinh(strtofloat(memo1.Text)));((inv.Checked=false) and ( hyp.Checked=true)) then:=strtozr(memo1.Text);

zn1:= sinhzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=false)) then.Text:=floattostr(sin(gradtorad(strtofloat(memo1.Text))));; .Checked:=false;.Checked:=false;_check:=true;;TForm1.SpeedButton45Click(Sender: TObject);

{if (b[t]=')') then:=true;:=t+1;[t]:=memo1.Text; .Text:=rezul2(t);;

(b[t]<>')') thenradiobutton6.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ):=strtozr(memo1.Text);:=Arccoszr(zn1);:=zrtoreal(zn1);.Text:=Floattostr(obrazec1);.Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) thenstrtofloat(memo1.Text)<1 then

begin.Text:='Недопустимое значение';

nev:=true;.Checked:=false;.Checked:=false;;:=strtozr(memo1.Text);

zn1:= AcoshZR(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;;((inv.Checked=false) and ( hyp.Checked=true)) then( strtofloat(memo1.Text)<1 ) then

begin.Text:='Недопустимое значение ';

inv.Checked:=false;.Checked:=false;;:=strtozr(memo1.Text);

zn1:= coshzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;; ((inv.Checked=false) and ( hyp.Checked=false)) then:=strtozr(memo1.Text);

zn1:= coszr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;;radiobutton5.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ).Text:=floattostr(180/pi*Arccos(strtofloat(memo1.Text))).Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) then(strtofloat(memo1.Text)<1) then

begin.Text:='Недопустимое значение';

nev:=true;.Checked:=false;.Checked:=false;;:=strtozr(memo1.Text);:=AcoshZr(zn1);:=zrtoreal(zn1);.Text:=floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=true)) then.Text:=floattostr(cosh(strtofloat(memo1.Text)));((inv.Checked=false) and ( hyp.Checked=false)) then(frac(strtofloat(memo1.Text))=0 )then begin(trunc(strtofloat(memo1.Text))=0) then begin memo1.Text:='1'; exit; end;(trunc(strtofloat(memo1.Text))=90) then begin memo1.Text:='0';exit end;(trunc(strtofloat(memo1.Text))=180) then begin memo1.Text:='-1';exit end;(trunc(strtofloat(memo1.Text)) mod 360=0) then begin memo1.text:='1';exit end;(trunc(strtofloat(memo1.Text)) mod 360=90) then begin memo1.text:='0';exit end;(trunc(strtofloat(memo1.Text)) mod 360=180) then begin memo1.text:='-1';exit end;;:=strtozr(memo1.Text);:=DegToRadZR(Zn1);:=coszr(zn1);

obrazec1:=zrtoreal(zn1);.Text:=floattostr(obrazec1);

end;;radiobutton7.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ).Text:=floattostr(200/pi*Arccos(strtofloat(memo1.Text))).Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) thenstrtofloat(memo1.Text)<1 then

begin.Text:='Недопустимое значение';

inv.Checked:=false;.Checked:=false;;;.Text:=floattostr(Arccosh(strtofloat(memo1.Text)));;((inv.Checked=false) and ( hyp.Checked=true)) then:=strtozr(memo1.Text);

zn1:= coshzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=false)) then.Text:=floattostr(cos(gradtorad(strtofloat(memo1.Text))));; .Checked:=false;.Checked:=false;_check:=true;;TForm1.SpeedButton49Click(Sender: TObject);

{if (b[t]=')') then:=t+1;[t]:=memo1.Text; :=true;.Text:=rezul2(t);; radiobutton6.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<90) and (strtofloat(memo1.Text)>(-90)) ):=strtozr(memo1.Text);

zn1:=Arctanzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);.Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) then:=strtozr(memo1.Text);

zn1:= AtanhZR(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=true)) then:=strtozr(memo1.Text);

zn1:= tanhzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=false)) then:=strtozr(memo1.Text);

zn1:= tanzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;;radiobutton5.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then;((inv.Checked=true) and (hyp.Checked=true)) then(strtofloat(memo1.Text)<1) then

begin.Text:='Недопустимое значение'; exit;

end:=strtozr(memo1.Text);

zn1:=AtanhZr(zn1);:=zrtoreal(zn1);

memo1.Text:=floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=true)) then.Text:=floattostr(tanh(strtofloat(memo1.Text)));((inv.Checked=false) and ( hyp.Checked=false)) then(frac(strtofloat(memo1.Text))=0 )then begin(trunc(strtofloat(memo1.Text))=0) then begin memo1.Text:='0'; exit; end;(trunc(strtofloat(memo1.Text))=90) then begin memo1.Text:='Недопустимоезначение';exit end;(trunc(strtofloat(memo1.Text))=270) then begin memo1.Text:='Недопустимоезначение';exit end;(trunc(strtofloat(memo1.Text))=180) then begin memo1.Text:='0';exit end;(trunc(strtofloat(memo1.Text)) mod 360=0) then begin memo1.text:='0';exit end;(trunc(strtofloat(memo1.Text)) mod 360=90) then begin memo1.text:='Недопустимоезначение';exit end;(trunc(strtofloat(memo1.Text)) mod 360=180) then begin memo1.text:='0';exit end;;((strtofloat(memo1.Text)=90 ) or (strtofloat(memo1.Text)=(-90)) ) then

begin.Text:='Недопустимое значение';

inv.Checked:=false;.Checked:=false;;:=strtozr(memo1.Text);:=DegToRadZR(Zn1);:=tanzr(zn1);

obrazec1:=zrtoreal(zn1);.Text:=floattostr(obrazec1);

end;;;radiobutton7.Checked=true then((inv.Checked=true) and (hyp.Checked=false))then((strtofloat(memo1.Text)<=1) and (strtofloat(memo1.Text)>=(-1)) ).Text:=floattostr(200/pi*Arctan(strtofloat(memo1.Text))).Text:='Недопустимоезначение';:=true;;;((inv.Checked=true) and (hyp.Checked=true)) then.Text:=floattostr(Arccosh(strtofloat(memo1.Text)));((inv.Checked=false) and ( hyp.Checked=true)) then:=strtozr(memo1.Text);

zn1:= tanhzr(zn1);:=zrtoreal(zn1);

memo1.Text:=Floattostr(obrazec1);;((inv.Checked=false) and ( hyp.Checked=false)) then.Text:=floattostr(tan(gradtorad(strtofloat(memo1.Text))));; .Checked:=false;.Checked:=false;_check:=true;;TForm1.SpeedButton43Click(Sender: TObject);

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; memo1.Text:=rezul2(t);; }:=strtozr(memo1.Text);(ComparisonZR(zn,inttozr(0))=-1) then memo1.Text:='Недопустимоезначение'(ComparisonZR(zn,inttozr(91999999999999999))=-1) then:=ZRToLongInt(zn,-1);:=Subzr(zn,zn1);((ComparisonZR(zn1,inttozr(0)))=1) then:=strtozr(memo1.Text);:=multzr(inttozr(2),zn1);:=sumzr(inttozr(1),zn);:=multzr(zn1,zn);:=multzr(inttozr(4),zn);:=sumzr(inttozr(1),zn);:=multzr(zn1,zn);:=lnzr(zn);:=divzr(zn,inttozr(6));:=lnzr(zn1);:=multzr(zn1,zn2);:=subzr(zn2,zn1);:=sumzr(zn2,zn);:=lnzr(pi_zr);:=divzr(zn,inttozr(2));:=sumzr(zn2,zn);:=powerzr(e_zr,zn2);

memo1.Text:=zr_e(zrtostr(zn2));

glob_check:=true;:=strtozr(memo1.Text);:=ZRToLongInt(zn,0);

zn1:=FactorZr(zrtoint(zn));.Text:=zr_e(zrtostr(zn1));

glob_check:=true;;

memo1.Text:='Что звезды собрался считать';

end;;TForm1.FormKeyPress(Sender: TObject; var Key: Char);key of

'9':( radiobutton1.Checked = true) or (radiobutton2.Checked = true) thenClick(SpeedButton1);:= #0;;

'8':( radiobutton1.Checked = true) or (radiobutton2.Checked = true) thenClick(SpeedButton1);:= #0;;

'7':( radiobutton4.Checked = false) thenClick(SpeedButton1);:= #0;;

'6':( radiobutton4.Checked = false) thenClick(SpeedButton1);:= #0;;

'5':( radiobutton4.Checked = false) thenClick(SpeedButton1);:= #0;;

'4':( radiobutton4.Checked = false) thenClick(SpeedButton1);:= #0;;

'3':( radiobutton4.Checked = false) thenClick(SpeedButton1);:= #0;;

'2':( radiobutton4.Checked = false) thenClick(SpeedButton1);:= #0;;

'1':Click(SpeedButton1);:= #0;;

'0':Click(SpeedButton1);:= #0;;

'/':Click(SpeedButton1);:= #0;;

'*':Click(SpeedButton1);:= #0;;

'-':Click(SpeedButton1);:= #0;;'+':Click(SpeedButton1);:= #0;;

#13:Click(SpeedButton1);:= #0;;

#27:Click(SpeedButton1);:= #0;;

#44:Click(SpeedButton1);:= #0;;

#8:Click(SpeedButton1);:= #0;;

#231:Click(SpeedButton1);:= #0;;

#244:radioButton1.Checked=true thenClick(SpeedButton1);:= #0;;

#232:radioButton1.Checked=true thenClick(SpeedButton1);:= #0;;

#241:radioButton1.Checked=true thenClick(SpeedButton1);:= #0;;

#226:radioButton1.Checked=true thenClick(SpeedButton1);:= #0;;

#243:radioButton1.Checked=true thenClick(SpeedButton1);:= #0;;

#224:radioButton1.Checked=true thenClick(SpeedButton1);:= #0;;

#40:Click(SpeedButton1);:= #0;;

#41:Click(SpeedButton1);:= #0;; ;;TForm1.SpeedButton35Click(Sender: TObject);

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; x.Text:=rezul2(t);; }(strtofloat(memo1.Text)>0) then.Text:=floattostr(ln(strtofloat(memo1.Text)))

else.Text:='Недопустимое значение';

glob_check:=true;;TForm1.SpeedButton41Click(Sender: TObject);

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; .Text:=rezul2(t);; }(strtofloat(memo1.Text)>0) then:=strtozr(memo1.Text);:=Log10ZR(zn1);.Text:=floattostr(zrtoreal(zn1));.Text:='Недопустимоезначение';_check:=true;;TForm1.SpeedButton48Click(Sender: TObject);.Text:=floattostr(pi);_check:=true;;TForm1.SpeedButton47Click(Sender: TObject);

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; .Text:=rezul2(t);; }memo1.Text='0' then memo1.Text:='Делениенанульзапрешено':=strtozr(memo1.Text);

zn1:=divzr(inttozr(1),zn1);.Text:=zr_e(zrtostr(zn1));

end;_check:=true;;TForm1.SpeedButton57Click(Sender: TObject);.Text:='0';_check:=true;;TForm1.RadioButton11Click(Sender: TObject);:string;:='';:=memo1.Text;(length(f)>8) then.Text:='';j:=1 to 8 do.Text:=memo1.Text+f[j];.MaxLength:=8;;;TForm1.RadioButton10Click(Sender: TObject);:string;:='';:=memo1.Text;(length(f)>16) then.Text:='';j:=1 to 16 do.Text:=memo1.Text+f[j];;;TForm1.RadioButton9Click(Sender: TObject);:string;:='';:=memo1.Text;(length(f)>32) then.Text:='';j:=1 to 32 do.Text:=memo1.Text+f[j];;;TForm1.RadioButton8Click(Sender: TObject);:string;:='';:=memo1.Text;(length(f)>64) then.Text:='';j:=1 to 64 do.Text:=memo1.Text+f[j];;;TForm1.SpeedButton50Click(Sender: TObject);:string;

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; memo1.Text:=rezul2(t);; }:=strtozr(memo1.Text);inv.Checked = true then(ComparisonZR(zn1,inttozr(0))=-1) then.Text:='Недопустимое значение';

nev:=true;;;:=powerzr(zn1,realtozr(0.5));:=RefreshZR(zn1);:=sqrzr(zn1);:=RefreshZR(zn1);

end;.Text:=zr_e(zrtostr(zn1));

glob_check:=true;

{sm:=zrtostr(zn1);j:=1 to length(sm) dosm[j]='Z' then sm[j]:='E';sm[j]='+' then delete(sm,j,1);;.Text:=sm;};TForm1.SpeedButton46Click(Sender: TObject);

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; memo1.Text:=rezul2(t);; }:=strtozr(memo1.Text);:=powerzr(zn1,inttozr(3));

obrazec1:=zrtoreal(zn1);.Text:=zr_e(zrtostr(zn1));

glob_check:=true;;TForm1.SpeedButton10Click(Sender: TObject);meraisch of

: memo1.Text:=DrtoDes(memo1.Text,2);

8: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

End;:=t+1;[t]:=memo1.Text;[t]:='m';(((b[2]<>'0') and ((b[1]<>'+') and (b[1]<>'-')) and ((b[t-1]<>'+') and(b[t-1]<>'-') )) and (skob=false)) then.Text:=rezul(t-1);_check:=true;meraisch of

: memo1.Text:=DesToDr(memo1.Text,2);

8: memo1.Text:=DesToDr(memo1.Text,8);

: memo1.Text:=DesToDr(memo1.Text,16);

end;;TForm1.SpeedButton28Click(Sender: TObject);(glob_check=true) then memo1.Text:='';

memo1.Text:=memo1.Text+'F';

glob_check:=false;;TForm1.SpeedButton21Click(Sender: TObject);

{if ((skob=true ) or (b[t]=')') ) then:=true;:=t+1;[t]:=memo1.Text; .Text:=rezul2(t);; }:=strtozr(memo1.Text);:=sumzr(zn1,inttozr(1));

zn1:=multzr(inttozr(-1),zn1);.Text:=zr_e(zrtostr(zn1));

glob_check:=true;;TForm1.SpeedButton24Click(Sender: TObject);:=strtozr(memo1.Text);:=multzr(inttozr(-1),zn1);.Text:=floattostr(zrtoreal(zn1));_check:=true;;TForm1.SpeedButton58Click(Sender: TObject);:string;:=memo1.Text;(st,length(st),1);.Text:=st;memo1.Text='' then.Text:='0';_check:=true;;;TForm1.N8Click(Sender: TObject);

begin('Ну и что здесь не понятного');

end;TForm1.N5Click(Sender: TObject);

begin(' Что инженерного Мало ');

end;TForm1.N2Click(Sender: TObject);.SetTextBuf(PChar(memo1.Text)); //copy;TForm1.N3Click(Sender: TObject);.Text := Clipboard.AsText; //paste_check:=true;;TForm1.SpeedButton22Click(Sender: TObject);meraisch of

: memo1.Text:=DrtoDes(memo1.Text,2);

8: memo1.Text:=DrtoDes(memo1.Text,8);

: memo1.Text:=DrtoDes(memo1.Text,16);

end;:=t+1;[t]:=memo1.Text;inv.Checked=false then[t]:='l'[t]:='h';(((b[2]<>'0') and ((b[1]<>'+') and (b[1]<>'-')) and ((b[t-1]<>'+') and(b[t-1]<>'-') )) and (skob=false)) then.Text:=rezul(t-1);_check:=true;meraisch of

: memo1.Text:=DesToDr(memo1.Text,2);

8: memo1.Text:=DesToDr(memo1.Text,8);

: memo1.Text:=DesToDr(memo1.Text,16);

end;;.

//допоміжна формаUnit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Buttons, StdCtrls, CheckLst;= class(TForm): TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TListBox;SpeedButton1Click(Sender: TObject);Memo1KeyPress(Sender: TObject; var Key: Char);FormCreate(Sender: TObject);FormActivate(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);SpeedButton3Click(Sender: TObject);SpeedButton4Click(Sender: TObject);SpeedButton2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;Unit1;

{$R *.dfm}TForm2.SpeedButton1Click(Sender: TObject);.SetFocus;;TForm2.Memo1KeyPress(Sender: TObject; var Key: Char);:=chr(0);;TForm2.FormCreate(Sender: TObject);.speedbutton52.Visible:=true;.speedbutton53.Visible:=true;.speedbutton54.Visible:=true;.speedbutton55.Visible:=true;;TForm2.FormActivate(Sender: TObject);.speedbutton52.Enabled:=true;.speedbutton53.Enabled:=true;.speedbutton54.Enabled:=true;.speedbutton55.Enabled:=true;;TForm2.FormClose(Sender: TObject; var Action: TCloseAction);.speedbutton52.Enabled:=false;.speedbutton53.Enabled:=false;.speedbutton54.Enabled:=false;.speedbutton55.Enabled:=false;;TForm2.SpeedButton3Click(Sender: TObject);.Items.Delete(ListBox1.ItemIndex);;TForm2.SpeedButton4Click(Sender: TObject);.Items.Clear;;TForm2.SpeedButton2Click(Sender: TObject);(ListBox1.ItemIndex=-1) then ShowMessage('Нет чисел для добавления').Memo1.Text:=ListBox1.Items.Strings[ListBox1.ItemIndex];_check:=true;;.


//Операції з мульти розрядними дійсними числами типу RealzoomingRN;= array of Byte; = Record

R :Byte; {arithmetic range: binary(=2), decimal(=10), hexadecimal(=16), and others}

E :Int64; {number exponent (index of power)}

U :Char; {Unary}

I :TZN; {Number - array of digits}

end;

type= array of ZReal;

var: boolean = false;

ErrorZR: boolean = false;: string = '';: Cardinal = 32;: Cardinal = 1000;:Int64 = low(Int64);:Byte = 5;:Boolean = False;='1.0 Original for Delphi [Byte]';= ['0'..'9'] ; = ['+', '-'] ; = ['z', 'Z'] ;= ['i', 'I'] ;= ['.', ','] ; = ['e', 'E', 'е', 'Е'] ; =10; =32;InfiniteZR(Un: Char): ZReal;HighDeciZR(const ZR: ZReal; out IsNearInf: Boolean): ZReal;Pi_ZR: ZReal;e_ZR: ZReal;IsInfinite(const ZR: ZReal): Boolean;TanhZR(const ZR: ZReal ): ZReal;CothZR(const ZR: ZReal ): ZReal;PowerZR(const ZR: ZReal; Power: ZReal): ZReal;Log2ZR(const ZR: ZReal): ZReal;Log10ZR(const ZR: ZReal): ZReal;LogNZR(const Base, ZR: ZReal): ZReal;CotanZR(const ZR: ZReal ): ZReal;CosZR(const ZR: ZReal ): ZReal;SinZR(const ZR: ZReal ): ZReal;SinCosZR(const Theta: ZReal; out Sin, Cos: ZReal);,;= -1..1;= Low(TMathValueSign);= 0;= High(TMathValueSign);MathRandomRange(const AFrom, ATo: Integer): Integer;AFrom > ATo then:= Random(AFrom - ATo) + ATo:= Random(ATo - AFrom) + AFrom;;IsIn9_10(const ZR: ZReal): Boolean;:Integer;:=False;:=Length(ZR.I);len=0 then Exit;len=1 thenZR.I[0]=9 then Result:=True;;;ZR.I[High(ZR.I)]=9 then begin Result:=True; Exit; end;(ZR.I[High(ZR.I)]=1) and (ZR.I[High(ZR.I)-1]=0) then Result:=True;;IsIn999_1000(const ZR: ZReal): Boolean;,k:Integer;:=False;:=Length(ZR.I);len<3 then Exit;len=3 then(ZR.I[0]=ZR.I[2]) and (ZR.I[0]=ZR.I[1]) and (ZR.I[0]=9) then Result:=True;;;:=High(ZR.I);(ZR.I[k-2]=9) and (ZR.I[k-1]=9) and (ZR.I[k]=9) thenResult:=True; Exit; end;(ZR.I[k]=1) and (ZR.I[k-1]=0) and (ZR.I[k-2]=0) and (ZR.I[k-3]=0) then Result:=True;;IsIn99999_100000(const ZR: ZReal): Boolean;len,k,i:Integer;:=False;:=Length(ZR.I);len<4 then Exit;len=4 theni:=0 to len-1 do(ZR.I[i]<>9) then Exit;:=True;;;:=High(ZR.I);ZR.I[k]=9 theni:=1 to 4 doZR.I[k-i]<>9 then Exit;;:=True;;;ZR.I[k]=1 theni:=1 to 5 doZR.I[k-i]<>0 then Exit;;:=True;;;;DelArrElem(var A: TDynArrZR; Index: Integer);

var: Integer;: Integer;

begin:= High(A);Index<n theni:=Index to n-1 do[i]:=A[i+1];;(A, n-1 );;;squeezeArea(const ZR: ZReal): ZReal;: ZReal;:Cardinal;: Int64;: Boolean;:=ZR;:=MaxZNCount;:=HighDeciZR(ZR,bool).E;exp>1000 then exp:=1000;exp>0MaxZNCount:=MaxZNCount+exp+2 MaxZNCount:=MaxZNCount+2;MoreThanZR(AbsZR(Result),Pi_ZR) do:=DivZR(Result,PiMult2_ZR);:=ZRToLongInt(ZR0);:=MultZR(PiMult2_ZR,ZR0);:=SubZR(Result,ZR0);;:=BakMaxZNCount;;_CosZR(const ZR: ZReal): ZReal;

var,ZR1,ZR2,ZR3,ZR4: ZReal;

BakMaxZNCount: Cardinal;: Boolean;,j: Integer;: Integer;:=MaxZNCount;:=MaxZNCount+3;:=OneZR; :=SqrZR(ZR);:=ZR0;:=HighDeciZR(ZR0,bool).E; :=j-MaxZNCount+2;:=0; :=OneZR;(j>iExp) do:=j-iExp+2; :=MultZR(ZR4,InvertUnaryZR(ZR1)); (i);:=MultZR(ZR2,IntToZR(i));(i);:=MultZR(ZR2,IntToZR(i)); :=DivZR(ZR1,ZR2);:=HighDeciZR(ZR3,bool).E; :=BakMaxZNCount+2;:=SumZR(ZR0,ZR3);;:=ZR0;:=BakMaxZNCount;;:=HighDeciZR(ZR0,bool).E; :=j-MaxZNCount+2; :=1; :=OneZR;(j>iExp) do:=j-iExp+2;

ZR1:=MultZR(ZR4,InvertUnaryZR(ZR1));

Inc(i);:=MultZR(ZR2,IntToZR(i));(i);:=MultZR(ZR2,IntToZR(i)); :=DivZR(ZR1,ZR2);:=HighDeciZR(ZR3,bool).E; :=BakMaxZNCount+2;:=SumZR(ZR0,ZR3);;:=ZR0;:=BakMaxZNCount;;Func(Const arg: ZReal; out F: ZReal; Const Ind: ShortInt);ind of

: F:=_CosZR(arg);

: F:=_SinZR(arg);; ;TrimLeftZR(var Arr:TZN): Boolean;

i:Integer; : Integer; :Integer;

begin:=False;:=Length(Arr);

nzero:=0;i:=lenN-1 downto 0 do

beginArr[i] = 0 then Inc(nzero)Break; ;nzero > 0 thenlenN=nzero then Dec(nzero);(Arr, lenN-nzero);lenN>1 then Result:=True;;;TrimRightZR(var ZR:ZReal): Shortint;

var:Integer; : Integer; :Integer;

begin:=0;:=Length(ZR.I);:=0;i:=0 to lenN-1 doZR.I[i] = 0 then Inc(nzero)Break; ;nzero=lenN then begin Result:=1; ZR:=DefaultZR; ; ; nzero > 0 thenZR.E>0 then(High(Int64)-ZR.E)<nzero then begin Result:=-1; Exit; end;i:=0 to lenN-nzero-1 do.I[i] := ZR.I[i+nzero]; ;(ZR.I, lenN-nzero);

ZR.E:=ZR.E+nzero;

Result:=1;;;LengthZR(var ZR:ZReal): Cardinal; :Int64;:Boolean;:=0;ZR.U='-' then Inc(Result);RealTypeShow then:=HighDeciZR(ZR,isInf).E;not isInf then:=Length(ZRToStr(ZR)); ;;;ZR.E<>0 then:=Result+Length(IntToStr(ZR.E))+1;ZR.E>0 then Result:=Result+1;;:=Result+Length(ZR.I);;RefreshZR(var ZR:ZReal): ZReal;(ZR.I);(ZR);:=ZR;;AbsZR(const ZR: ZReal): ZReal;:=ZR;Result.U='-' then begin Result.U:='+'; Exit; end;Result.U='i' then begin Result.U:='I'; Exit; end;;EpsilonZR: ZReal;:TZN;.E:=ZeroZNExp;.U:='+';.R:=decimal;(zArr, 1); [0]:=1;.I:=zArr;;OneDivZR(const ZR: ZReal): ZReal;:=DivZR(OneZR, ZR);;PercentZR(const Percent: ZReal; const ZR: ZReal): ZReal;:=DivZR(Percent, StrToZR('100'));:=MultZR(Result,ZR);;MinExtendedZR: ZReal; .R:=decimal;

Result.E:=-4933;.U:='+';

SetLength(Result.I, 2); .I[0]:=4;.I[1]:=3;;EqvToZR(const WhatZR: ZReal; const ToZR: ZReal): Boolean;:= ComparisonZR(WhatZR, ToZR) = 0 ;.


Додаток В


Опис програми UA.ОМК.620111-0513


ЗМІСТ

1.Загальні відомості

2.Функціональне призначення

.Виклик і завантаження

.Вхідні дані

.Вихідні дані

ЗАГАЛЬНІ ВІДОМОСТІ

Розроблений програмний продукт функціонує в операційних системах Microsoft© Windows XP / 2003 / 2008 / 7 / 8.1. Для коректної роботи програми необхідно мінімум 256 МБ оперативної памяті та процесор з частотою 1000 МГц. Для розробки інтерфейсу користувача було використане сучасне інтегроване середовище програмування EmbarcaderoRADStudioXE4.

1.ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ

Основним функціональним призначенням розробленого програмного продукту є простота шифрування/розшифрування тексту, що вводить користувач. Дана програма може бути застосована у будь-якій системі для шифрування, адже вона є універсальною і легко пристосовується до нових вхідних даних, не вимоглива до ресурсів системи і є простою в користуванні.

2.ВИКЛИК І ЗАВАНТАЖЕННЯ

Виклик програми здійснюється подвійнім натисканням миші по виконуваному файлі Project1.exe, після чого здійснюється завантаження даних у робочу область.

3.ВХІДНІ ДАНІ

Вхідними даними для даного програмного продукту є отримання результату підрахунку , що записується у вигляді букв цифр, масиву чисел, логарифму, функції.

.ВИХІДНІ ДАНІ

Вихідними даними є отримання результату обчислення в інженерному калькуляторі, який при необхідності можна зберегти.


КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА ОПТИКО-МЕХАНІЧНИЙ КОЛЕДЖ Циклова комісія спеціальних дисциплін спеціальності .05010301 «Р

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2018 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ