.

Навчальна програма переведення дійсних чисел з 2,8,10,16 у 2,8,10,16 системи числення (курсова робота)

Язык: украинский
Формат: курсова
Тип документа: Word Doc
1 11042
Скачать документ

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

на тему:

Навчальна програма переведення дійсних чисел з 2,8,10,16 у 2,8,10,16
системи числення

З А В Д А Н Н Я

на курсову роботу з дисципліни

” Проблемно-орієнтовані мови програмування ”

Т е м а: “Навчальна програма переведення дійсних чисел з 2,8,10,16 у

2,8,10,16 системи числення.”

ЗМIСТ ЗАВДАННЯ ТА КАЛЕНДАРНИЙ ПЛАН ЙОГО ВИКОНАННЯ

1. Провести аналiтичний огляд лiтератури по заданій темi. 27.02

2. Розробити алгоритм та графiчну схему програми розв’язування задачi
26.03

3. 1) програма повинна працювати під керуванням операційної системи
MSDOS;

2) програма повинна мати інтерфейс у вигляді вікон та меню для вибору
режимів її роботи;

3) передбачити ввід/вивід даних з клавіатури та з файлу;

4) керування режимами роботи програми виконати за допомогою клавіатури
та миші;

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

6) програма повинна бути написана на мові С/С++;

7) програма повинна містити калькулятор для переведення чисел у різні
системи числення. 23.04

4. Пiдготувати вхiднi данi для контрольного прикладу. 30.04

5. Реалiзувати та вiдлагодити програми на вказаних мовах
програмування. 21.05

6. Оформити записку до курсової роботи згiдно вимог Мiжнародних
стандартiв, дотримуючись такого змiсту: 28.05

-вступ;

-формулювання задачі, методи та засоби її розв’язування;

-алгоритм розв’язування задачі;

-опис програми на мові C/C++ ;

-технологія програмування, виконання та відлагодження програми;

-інструкція користувачу;

-контрольний приклад та аналіз результатів комп’ютерної реалізації
програми;

-висновки;

-література;

-додатки

Зміст

Вступ ……………………………………………………………………..4

Формулювання задачі, методи та засоби її розв’язування ……………..5

Алгоритм розв’язування задачі………………………………………….9

Опис програм на мовах C/C++…………………………………………14

Технологія програмування, виконання та відлагодження програми..16

Інструкція користувачеві……………………………………………….17

Аналіз результатів комп’ютерної реалізації програми………………19

Висновки……………………………………………………………………20

Література…………………………………………………………………..21

Додаток – текст програми на мовах C/C++………………………………22

Вступ

Метою виконання курсової роботи є закріплення теоретичних знань та
практичних навичок програмування, набутих при вивченні дисциплін “Основи
програмування” та “Проблемно орієнтовані мови програмування”.

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

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

1. Формулювання задачі, методи та засоби її розв’язування

Завдання даної курсової роботи полягає у створенні навчальної програми з
переведення чисел у основні системи числення.

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

У програмі повинен бути калькулятор для переведення чисел, який би
використовував функції переведення, засновані на стандартних методах.
Такий калькулятор найзручніше буде реалізувати у вигляді діалогового
вікна(Рис. 1). Це діалогове вікно повинно містити поле для вводу числа у
початковій системі числення, поле, у якому виводиться результат
переведення, перемикач типу «радіо-кнопка» для вибору початкової системи
числення, такий же для вибору системи, у яку буде переводитися число,
кнопку переведення та кнопку виходу з калькулятора. Від варіанту
керування у вигляді прямокутної матриці у процесі тестування було
вирішено відмовитися через його невисоку ергономічність.

??[?]??? Виберiть варiант переведення числа ????????

? ?

? From To Input ?

? ?

? (•) 2 (•) 2 ?

? ( ) 8 ( ) 8 Output ?

? ( ) 10 ( ) 10 ?

? ( ) 16 ( ) 16 ?

? OK! ? Cancel? ?

? ??????? ??????? ?

????????????????????????????????????????????????????

Рис. 1. Загальний вигляд діалогового вікна калькулятора.

Інтерфейс найзручніше створювати за допомогою бібліотеки TurboVision,
яка дозволяє швидко та ефективно створити зручний текстовий інтерфейс
для програми, який керується за допомогою миші та гарячих клавіш.
Використання цього пакету вимагає знань об’єктно-орієнтовного
програмування, а саме мови С++.

Основною одиницею у об’єктно-орієнтовному програмуванні на С++ є класи.
Клас – це визначення типу, з яким буде працювати програма та функції для
роботи з цим типом. При створенні будь-якої програми на С++ програміст
створює свій власний клас, у якому визначає всі необхідні йому функції і
підкласи. Часто буває так, що клас містить інший підклас, а той у свою
чергу містить свої підкласи і т.д. Бібліотека TurboVision представляє
собою групу класів, об’єднаних між собою. Кожен з них містить свої
підкласи. Класи мають чітку ієрархію(Рис.2).

(f) ?opstream

?????????

TObject TStreamable??

^ ^ ?????????

??????????????????????????? (f) ?ipstream

?

TView

f = friend ^

v = virtual ?

TGroup

^ ^ ^

??????????????????? ? ?????????? (v) TDeskInit

? ? ? ^

? ? ?????????????????

? ? TWindowInit ?

? ? (v) ^ ?

? TProgInit ?????????? TDeskTop

? ^ (v) ?

?????????? ??>TWindow???? THistInit? ? ? ?TProgram ? THistoryWindow????^ ?? ?TApplication TDialogРис. 2. Ієрархія класів TurboVisionОскільки нас найбільше цікавлять класи, що дозволяють створити інтерфейс, то розглянемо клас TView(Рис.3):View?????????

??

Після запуску програми запускається основний клас TProgApp, який будує інтерфейс. Після вибору користувачем відповідної команди запускається калькулятор calculator(), у який вводяться дані. У калькуляторі запущено нескінченний цикл, вихід з якого виконується при натисненні кнопки відміни. У випадку натиснення кнопки ОК дані зчитуються, оброблюються і виводяться на екран у такому ж діалоговому вікні. Дані передаються у функцію Trans()(рис.4), яка обробляє їх і запускає відповідну до положення перемикачів функцію переведення, якщо положення перемикачів таке, що переведення не потрібне, то у рядок виведення записується інформація, введена користувачем.Рис.4 Функція Trans()На рис. 5-16 зображено графічні схеми функцій переведення чисел в різні системи численняРис. 5 Функція Oct2BinРис. 6 Функція Dec2BinРис. 7 Функція Hex2BinРис. 8 Функція Bin2OctРис. 9 Функція Dec2OctРис. 10 Функція Hex2OctРис. 11 Функція Bin2DecРис. 12 Функція Oct2DecРис. 13 Функція Hex2DecРис. 14 Функція Bin2HexРис. 15 Функція Oct2HexРис. 16 Функція Dec2Hex3. Опис програм на мовах C/C++.Назва програми: Number systems translator.Призначення програми: переведення чисел з основних систем числення, довідка по цих способах, калькулятор для таких переведень.Мова програмування: Turbo C. Ця мова програмування була розроблена для написання операційної системи UNIX, і завоювала неабияку популярність завдяки вдалій реалізації багатьох можливостей, які характерні як для мов високого рівня, так і для системного програмування. Вважається високорівневою ассемблерною мовою. Автори Керніган і Рітчі. На основі мови Сі розроблено багато інших мов, таких як С++, Java та інших.С++ - розширення мови Сі на засадах об’єктно-орієнтовного програмування.Логічна структура програми: при старті програми запускається конструктор handleEvent, який відслідковує команди, що надсилаються з приладів керування. За допомогою операторів вибору варіантів на кожну команду виконується відповідна до неї дія. Так, наприклад, натиснення кнопки F1 надсилає у конструктор команду HelpCmd, вона обробляється у конструкторі і запускає функцію Help, яка будує на екрані вікно з текстом файлу, ім’я якого вказане у якості параметру цієї функції. По такому ж принципу будується і решта взаємодій у програмі.Функцію calculator() розглянемо детальніше, оскільки вона має більш складну будову.Рис.17 Схема взаємодії калькулятора з функціями переведенняПісля введення даних, вони записуються у структуру типу DialogData, яка містить в собі шлях переведення, рядок введення та виведення. Далі структура передається у конструктор Trans(), який вибирає згідно з шляхом переведення ту функцію, яку необхідно запустити, щоб перевести дані. У функцію передається два рядки – вводу та виводу. Функція обробляє рядок вводу згідно з стандартними алгоритмами переведення чисел і записує результат у рядок виводу. Далі вікно калькулятора перебудовується з новим значенням рядку-виводу і процес запускається заново, оскільки у калькуляторі запущений нескінченний цикл, вихід з якого здійснюється користувачем вручну, шляхом натиснення кнопки відміни.Дані зберігаються у змінній, котра оголошена у конструкторі TProgInit.Інформація довідкової системи міститься в наборі текстових файлів, що знаходяться в папці help. При запуску функції допомоги будується вікно, потім порядково читається інформація з файлу(його ім’я передається як параметр цієї функції), і вставляється у вікно.Вхідні та вихідні дані: дані вводяться з клавіатури і виводяться на екран. Файловий ввід-вивід основних даних не реалізовано через те, що у даному випадку він не є доцільним. При побудові вікна довідкової системи текст довідки береться з зовнішнього текстового файлу.Дані вносяться у структуру вигляду:struct DialogData{ushort from;ushort to;char InputLine[length];char OutputLine[length];};, де - ushort from – система, з якої переводимоushort to – система, у яку переводимоchar InputLine[length] – число, введене користувачемchar OutputLine[length] – результат обчислення, що виводиться на екранПрограмні засоби: інтегроване середовище Borland Turbo C++ 3.0, вбудовані в нього редактор та компілятор, бібліотека TurboVision. Протестовано на операційній системі – режим емуляції DOS, вбудований у ОС Microsoft Windows XP Professional SP2. Потребує систему з установленою MS-DOS або її емулятором.Технічні засоби: програма потребує комп’ютера на базі IBM-PC. Протестовано на Athlon XP 1700+ 768 Mb RAM.4. Технологія програмування, виконання та відлагодження програми.Програма написана у одному файлі з використанням бібліотеки TurboVision. Створений клас TProgApp об’єднує в собі як інтерфейс так і прикладну частину програми.Для запуску програми необхідно відкрити її файл проекту у робочій папці компілятора Borland Turbo C++ 3.0 з підключеними бібліотеками TurboVision. Програма готова до запуску.Відлагодження програми після створення інтерфейсу відбувалося за допомогою вбудованого калькулятора ОС Windows. Значення, отримані при запуску програм звірялися і за допомогою них виявлялися помилки. Помилки, що були виявленні мали переважно синтаксичний характер(типу неправильно розставлених індексів).Інструкція користувачеві.Для запуску калькулятора користувач повинен вибрати пункт меню файл-калькулятор:Рис. 18 Меню програмиУ діалоговому вікні вибрати шлях переведення, ввести число та натиснути кнопку ОК. Для виходу натиснути кнопку Cancel.Рис.19 КалькуляторДовідка запускається натисненням кнопки F1. Для отримання довідки по методу переведення потрібно вибрати пункт у меню «Довідка»Рис. 20 Меню довідкової системи5. Аналіз результатів комп’ютерної реалізації програмиПри тестуванні програми вводилися по два-три приклади чисел у кожній з систем числення для кожного з варіантів комбінацій додатніх-від’ємних чи цілих-дійсних чисел. Результати, що були отримані перевірялися і є правильними.Отже, програма працює так, як повинна. Загалом програма має простий текстовий інтерфейс і дещо обмежені можливості, однак повністю задовольняє умови завдання. Програма тестувалася на системі високого рівня, тому про швидкість її роботи нічого сказати не можна, але теоретично така програма не може мати високі системні вимоги.ВисновкиПровівши дану розрахункову роботу я написав програму, закріпив теоретичні знання та практичні навички програмування, набуті при вивченні дисципліни “Проблемно-орієнтовані мови програмування”.В ході виконання розрахункової роботи студенти я навчився самостійно працювати з літературою, розробляти алгоритми та програми на мові програмування Turbo C.Позитивними сторонами даної роботи є висока швидкість роботи, відносна простота коду. Недолік – певна незакінченість програми та відсутність ряду можливостей, які могли бути присутні.Cписок використаної літератури1. Методичні вказівки до курсової роботи з дисциплiни "Проблемно-орієнтовані мови програмування" для студентів спеціальності “Інтелектуальні системи прийняття рішень” / Укл. П.О.Кравець. - Львів: Видавництво Національного університету “Львівська політехніка”, 2005. - 21 с.2. Прата С. - Программирование на языке С.3. Керниган, Ричи – Язык Си.4. Авторский коллектив "*.*" и СП "Интерквадро" Turbo Vision для С++ .Додаток 1. Текст програми на мові Turbo C.///////////////////////////////////////////////////////////////// NUMBER SYSTEM TRANSLATOR //// Курсова робота з П.О.М.П. //// студента групи КН-119, IКНI, кафедра IСМ //// Гайдiна В.А. //// "Навчальна програма переведення дiйсних чисел з 2,8,10,16 //// у 2,8,10,16 системи числення" //// (c)2005 Вiктор Гайдiн /////////////////////////////////////////////////////////////////#define Uses_TKeys#define Uses_TWindow#define Uses_TApplication#define Uses_TRect#define Uses_TTerminal#define Uses_MsgBox#define Uses_otstream#define Uses_TDeskTop#define Uses_TApplication#define Uses_TEvent#define Uses_TRect#define Uses_TDialog#define Uses_TStaticText#define Uses_TButton#define Uses_TMenuBar#define Uses_TSubMenu#define Uses_TMenuItem#define Uses_TStatusLine#define Uses_TStatusItem#define Uses_TStatusDef#define Uses_TDeskTop#define Uses_TChDirDialog#define Uses_TFileDialog#define Uses_MsgBox#define Uses_TDisplay#define Uses_TScreen#define Uses_TEditor#define Uses_TMemo#define Uses_TView#define Uses_TGroup#define Uses_TCluster#define Uses_TCheckBoxes#define Uses_TRadioButtons#define Uses_TLabel#define Uses_TInputLine#define Uses_TSItem#include

#include

//константи команд керування програмою

const CalcCmd = 102;

const HelpCmd = 101;

const Oct2BinCmd = 110;

const Dec2BinCmd = 111;

const Hex2BinCmd = 112;

const Bin2OctCmd = 113;

const Dec2OctCmd = 114;

const Hex2OctCmd = 115;

const Bin2DecCmd = 116;

const Oct2DecCmd = 117;

const Hex2DecCmd = 118;

const Bin2HexCmd = 119;

const Oct2HexCmd = 120;

const Dec2HexCmd = 121;

struct DialogData{ushort from;//структура для збереження даних
калькулятора

ushort to;

char InputLine[length];

char OutputLine[length];

};

void Trans(struct DialogData * DataPtr);//заголовки функцій

void Oct2Bin(char *in,char *out);

void Dec2Bin(char *in,char *out);

void Hex2Bin(char *in,char *out);

void Bin2Oct(char *in,char *out);

void Dec2Oct(char *in,char *out);

void Hex2Oct(char *in,char *out);

void Bin2Dec(char *in,char *out);

void Oct2Dec(char *in,char *out);

void Hex2Dec(char *in,char *out);

void Bin2Hex(char *in,char *out);

void Oct2Hex(char *in,char *out);

void Dec2Hex(char *in,char *out);

//основний клас програми, містить функції,які виводять на екран елементи

//інтерфейсу

class TProgApp : public TApplication

{

public:

TProgApp();

virtual void handleEvent( TEvent& event );

static TMenuBar *initMenuBar( TRect );

static TStatusLine *initStatusLine( TRect );

private:

void Info();

ushort calculator();

void Help(char * fname);

};

//конструктор основного класу

TProgApp::TProgApp() :

TProgInit( &TProgApp::initStatusLine,

&TProgApp::initMenuBar,

&TProgApp::initDeskTop

)

{

struct DialogData DialogData;

struct DialogData *DataPtr;

DataPtr->from=1;

DataPtr->to=2;

strcpy(DataPtr->InputLine,”0000000000000″);

strcpy(DataPtr->OutputLine,”xXx”);

}

//калькулятор, виводить на екран діалогове вікно, у якому користувач
може

//перевести числа в різні системи числення

ushort TProgApp::calculator()

{

struct DialogData *DataPtr;

do{

TDialog *d = new TDialog(TRect( 14, 5, 66, 16 ), “Виберiть варiант
переведення числа” );

d->insert( new TButton( TRect( 30, 8, 39, 10 ), ” OK! “, cmOK,
bfDefault ) );

d->insert( new TButton( TRect( 39, 8, 48, 10 ), “Cancel”, cmCancel,
bfNormal ) );

TCluster *b=new TRadioButtons(TRect(1,4,8,8),

new TSItem(“2”,

new TSItem(“8”,

new TSItem(“10”,

new TSItem(“16″, 0)

))));

d->insert(b);

d->insert(new TLabel(TRect(1,2,10,3),”From”,b));

d->insert( new TStaticText( TRect( 20, 5, 50, 6 ),
DataPtr->OutputLine ) );

TCluster *c=new TRadioButtons(TRect(10,4,18,8),

new TSItem(“2”,

new TSItem(“8”,

new TSItem(“10”,

new TSItem(“16″, 0)

))));

d->insert(c);

d->insert(new TLabel(TRect(10,2,13,3),”To”,c));

new TInputLine(TRect(3,8,37,9),128);

d->insert(new TInputLine(TRect(19,2,50,3),length));

d->setData(DataPtr);

ushort control=execView( d );

функція,що виводить на екран діалогове вікно з інформацією про програму

void TProgApp::Info()

{

TDialog *d = new TDialog(TRect( 14, 5, 66, 16 ), “Iнформацiя про
програму” );

d->insert( new TStaticText( TRect( 3, 1, 48, 10 ), “Курсова робота з
П.О.М.П.\nстудента групи КН-119, IКНI, кафедра IСМ\nГайдiна В.А. aka
Mace Windu\n\”Навчальна програма переведення дiйсних чисел з 2,8,10,16 у
2,8,10,16 системи числення\”” ) );

d->insert( new TButton( TRect( 39, 8, 49, 10 ), ” OK “, cmCancel,
bfNormal ) );

deskTop->execView( d );

destroy(d);

}

//функція, що виводить на еран вікно з текстом, записаним у файлі, ім’я
якого //передається у неї як параметр char * fname

void TProgApp::Help(char * fname)

{

char s[256];

int y=1;

FILE * f;

f=fopen(fname,”r”);

TDialog *d = new TDialog(TRect( 0, 0, 56, 20 ), “Довiдка про
переведення числа” );

while(fgets(s,255,f)!=NULL)

{

d->insert( new TStaticText( TRect( 1, y, 55, y+1 ), strdup(s) ) );

y++;

}

d->insert( new TButton( TRect( 1, 17, 9, 19 ), “OK”, cmCancel,
bfNormal ) );

deskTop->execView( d );

destroy(d);

}

//обробник подій, в нього передається константа команди, у відповідь на
неї

//запускається функція, яка відповідає цій константі

void TProgApp::handleEvent( TEvent& event )

{

struct DialogData * DataPtr;

TApplication::handleEvent( event );

ushort control;

if( event.what == evCommand )

{

switch( event.message.command )

{

case CalcCmd:

clearEvent( event );

while(calculator()==cmOK);

break;

case InfoCmd:

Info();

clearEvent( event );

break;

case HelpCmd:

Help(“help\\help.txt”);

clearEvent( event );

break;

case Bin2OctCmd:

Help(“help\\2-8.txt”);

clearEvent( event );

break;

case Bin2DecCmd:

Help(“help\\2-10.txt”);

clearEvent( event );

break;

case Bin2HexCmd:

Help(“help\\2-16.txt”);

clearEvent( event );

break;

case Oct2BinCmd:

Help(“help\\8-2.txt”);

clearEvent( event );

break;

case Oct2DecCmd:

Help(“help\\8-10.txt”);

clearEvent( event );

break;

case Oct2HexCmd:

Help(“help\\8-16.txt”);

clearEvent( event );

break;

case Dec2BinCmd:

Help(“help\\10-2.txt”);

clearEvent( event );

break;

case Dec2OctCmd:

Help(“help\\10-8.txt”);

clearEvent( event );

break;

case Dec2HexCmd:

Help(“help\\10-16.txt”);

clearEvent( event );

break;

case Hex2BinCmd:

Help(“help\\16-2.txt”);

clearEvent( event );

break;

case Hex2OctCmd:

Help(“help\\16-8.txt”);

clearEvent( event
???????†???????????????????????????????????????††??????????†????

//функція, що ініціалізує головне меню та забезпечує його роботу

TMenuBar *TProgApp::initMenuBar( TRect r )

{

r.b.y = r.a.y+1;

return new TMenuBar( r,

*new TSubMenu( “~М~еню”, kbAltV ) +

*new TMenuItem( “~К~алькулятор…”, CalcCmd, kbAltJ ) +

newLine() +

*new TMenuItem( “~В~ихiд”, cmQuit, cmQuit, hcNoContext, “Alt-X” ) +

*new TSubMenu( “~Д~овiдка”, kbAltL ) +

*new TMenuItem( “~П~ро програму…”, InfoCmd, kbAltG ) +

newLine() +

*new TMenuItem( “~Д~опомога”, HelpCmd, kbAltG ) +

newLine() +

*new TMenuItem( “2->8”, Bin2OctCmd, kbAltG ) +

*new TMenuItem( “2->10”, Bin2DecCmd, kbAltG ) +

*new TMenuItem( “2->16”, Bin2HexCmd, kbAltG ) +

newLine() +

*new TMenuItem( “8->2”, Oct2BinCmd, kbAltG ) +

*new TMenuItem( “8->10”, Oct2DecCmd, kbAltG ) +

*new TMenuItem( “8->16”, Oct2HexCmd, kbAltG ) +

newLine() +

*new TMenuItem( “10->2”, Dec2BinCmd, kbAltG ) +

*new TMenuItem( “10->8”, Dec2OctCmd, kbAltG ) +

*new TMenuItem( “10->16”, Dec2HexCmd, kbAltG ) +

newLine() +

*new TMenuItem( “16->2”, Hex2BinCmd, kbAltG ) +

*new TMenuItem( “16->8”, Hex2OctCmd, kbAltG ) +

*new TMenuItem( “16->10”, Hex2DecCmd, kbAltG )

);

}

//функція, що ініціалізує лінійку стану та забезпечує її роботу

TStatusLine *TProgApp::initStatusLine( TRect r )

{

r.a.y = r.b.y-1;

return new TStatusLine( r,

*new TStatusDef( 0, 0xFFFF ) +

*new TStatusItem( “~Alt-X~ – Exit”, kbAltX, cmQuit ) +

*new TStatusItem( “~Alt-I~ – iнформацiя про програму”, kbAltI,
InfoCmd ) +

*new TStatusItem( “~F1~ – довiдка”, kbF1, HelpCmd ) +

*new TStatusItem( 0, kbF10, cmMenu )

);

}

//функція, яка виводить початкову заставку при старті програми

void StartWindow()

{

int i,j;

textcolor(WHITE);

textbackground(BLACK);

clrscr();

gotoxy(13,23); cputs(” NUMBER SYSTEMS TRANSLATOR”);

gotoxy(13,24); cputs(“Education program (c) 2005 Victor Haydin aka Mace
Windu”);

gotoxy(13,25); cputs(” Press any key to continue”);

while(!kbhit())

{

window(1,1,22,80);

textcolor(LIGHTGREEN);

gotoxy(1,1);

for(i=1;i=0;i–)

out[i-strlen(s)+1]=s[i];

out[i+1]=’\0′;

strcat(out,”.”);

if(x-(int)x!=0)

{y=x-(int)x;

for(i=0;i1) {strcat(out,”1″);y-=1;}

else strcat(out,”0″);

if(y==0)break;

}

}

}

//функція переведення з 10 системи у 8, обробляє вхідний рядок char *in
і записує

//результат у вихідний рядок char *out

void Dec2Oct(char *in,char *out)

{ int i;

char s[length]=””;

double x,y;

int l;

x=atof(in);

if(x=0;i–)

out[i-strlen(s)+1]=s[i];

out[i+1]=’\0′;

strcat(out,”.”);

if(x-(int)x!=0)

{y=x-(int)x;

for(i=0;i1)

{if((int)y==1) strcat(out,”1″);

else if((int)y==2) strcat(out,”2″);

else if((int)y==3) strcat(out,”3″);

else if((int)y==4) strcat(out,”4″);

else if((int)y==5) strcat(out,”5″);

else if((int)y==6) strcat(out,”6″);

else if((int)y==7) strcat(out,”7″);

y-=(int)y;

}else strcat(out,”0″);

if(y==0)break;

}

}

}

//функція переведення з 10 системи у 16, обробляє вхідний рядок char *in
і записує

//результат у вихідний рядок char *out

void Dec2Hex(char *in,char *out)

{ int i;

char s[length]=””;

double x,y;

int l;

x=atof(in);

if(x=0;i–)

out[i-strlen(s)+1]=s[i];

out[i+1]=’\0′;

strcat(out,”.”);

if(x-(int)x!=0)

{y=x-(int)x;

for(i=0;i1)

{if((int)y==1) strcat(out,”1″);

else if((int)y==2) strcat(out,”2″);

else if((int)y==3) strcat(out,”3″);

else if((int)y==4) strcat(out,”4″);

else if((int)y==5) strcat(out,”5″);

else if((int)y==6) strcat(out,”6″);

else if((int)y==7) strcat(out,”7″);

else if((int)y==8) strcat(out,”8″);

else if((int)y==9) strcat(out,”9″);

else if((int)y==10) strcat(out,”A”);

else if((int)y==11) strcat(out,”B”);

else if((int)y==12) strcat(out,”C”);

else if((int)y==13) strcat(out,”D”);

else if((int)y==14) strcat(out,”E”);

else if((int)y==15) strcat(out,”F”);

y-=(int)y;

}else strcat(out,”0″);

if(y==0)break;

}

}

}

//функція переведення з 16 системи у 2, обробляє вхідний рядок char *in
і записує

//результат у вихідний рядок char *out

void Hex2Bin(char *in,char *out)

{ char *p,e=1;

strcpy(out,””);

for(p=in;p=in)

{triada[i][2]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”111″)==0) strcat(out,”7″);

}

else if(minus==1&&dot==0)

{i=0;

while(p>=in+1)

{triada[i][2]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”111″)==0) strcat(out,”7″);

}

else if(minus==0&&dot==1)

{i=0;

p=strchr(in,’.’)-1;

while(p>=in)

{triada[i][2]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”111″)==0) strcat(out,”7″);

strcat(out,”.”);

i=0;

p=strchr(in,’.’)+1;

while(pin+strlen(in)) break;

triada[i][1]=*p;

p++;

if(p>in+strlen(in)) break;

triada[i][2]=*p;

p++;

if(p>in+strlen(in)) break;

i++;

}

for(j=0;j=in+1)

{triada[i][2]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”111″)==0) strcat(out,”7″);

strcat(out,”.”);

i=0;

p=strchr(in,’.’)+1;

while(pin+strlen(in)) break;

triada[i][1]=*p;

p++;

if(p>in+strlen(in)) break;

triada[i][2]=*p;

p++;

if(p>in+strlen(in)) break;

i++;

}

for(j=0;j=0;i–)

{switch(in[i])

{case ‘1’: x+=1*pow(2,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(2,i); break;

default : strcpy(out,”Error”); break;

};}

else if(dot==1&&minus==0)

{i=0;

for(p=strchr(in,’.’)-1;p>=in;p–)

{switch(*p)

{case ‘1’: x+=1*pow(2,i); break;

case ‘0’: x+=0*pow(2,i); break;

default : strcpy(out,”Error”); break;

};i++;

}

i=-1;

for(p=strchr(in,’.’)+1;p0;i–)

{switch(in[i])

{case ‘1’: x+=1*pow(2,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(2,i); break;

default : strcpy(out,”Error”); break;

};}x*=-1;}

else

{i=0;

for(p=strchr(in,’.’)-1;p>in;p–)

{switch(*p)

{case ‘1’: x+=1*pow(2,i); break;

case ‘0’: x+=0*pow(2,i); break;

default : strcpy(out,”Error”); break;

};i++;

}

i=-1;

for(p=strchr(in,’.’)+1;p=in)

{triada[i][3]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”0000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”0001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”0010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”0011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”0100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”0101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”0110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”0111″)==0) strcat(out,”7″);

else if(strcmp(triada[j],”1000″)==0) strcat(out,”8″);

else if(strcmp(triada[j],”1001″)==0) strcat(out,”9″);

else if(strcmp(triada[j],”1010″)==0) strcat(out,”A”);

else if(strcmp(triada[j],”1011″)==0) strcat(out,”B”);

else if(strcmp(triada[j],”1100″)==0) strcat(out,”C”);

else if(strcmp(triada[j],”1101″)==0) strcat(out,”D”);

else if(strcmp(triada[j],”1110″)==0) strcat(out,”E”);

else if(strcmp(triada[j],”1111″)==0) strcat(out,”F”);

}

else if(minus==1&&dot==0)

{i=0;

while(p>=in+1)

{triada[i][3]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”0000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”0001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”0010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”0011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”0100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”0101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”0110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”0111″)==0) strcat(out,”7″);

else if(strcmp(triada[j],”1000″)==0) strcat(out,”8″);

else if(strcmp(triada[j],”1001″)==0) strcat(out,”9″);

else if(strcmp(triada[j],”1010″)==0) strcat(out,”A”);

else if(strcmp(triada[j],”1011″)==0) strcat(out,”B”);

else if(strcmp(triada[j],”1100″)==0) strcat(out,”C”);

else if(strcmp(triada[j],”1101″)==0) strcat(out,”D”);

else if(strcmp(triada[j],”1110″)==0) strcat(out,”E”);

else if(strcmp(triada[j],”1111″)==0) strcat(out,”F”);

}

else if(minus==0&&dot==1)

{i=0;

p=strchr(in,’.’)-1;

while(p>=in)

{triada[i][3]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”0000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”0001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”0010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”0011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”0100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”0101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”0110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”0111″)==0) strcat(out,”7″);

else if(strcmp(triada[j],”1000″)==0) strcat(out,”8″);

else if(strcmp(triada[j],”1001″)==0) strcat(out,”9″);

else if(strcmp(triada[j],”1010″)==0) strcat(out,”A”);

else if(strcmp(triada[j],”1011″)==0) strcat(out,”B”);

else if(strcmp(triada[j],”1100″)==0) strcat(out,”C”);

else if(strcmp(triada[j],”1101″)==0) strcat(out,”D”);

else if(strcmp(triada[j],”1110″)==0) strcat(out,”E”);

else if(strcmp(triada[j],”1111″)==0) strcat(out,”F”);

strcat(out,”.”);

i=0;

p=strchr(in,’.’)+1;

while(pin+strlen(in))
{triada[i][3]=’0′,triada[i][2]=’0′,triada[i][1]=’0′;break;}

triada[i][1]=*p;

p++;

if(p>in+strlen(in)) {triada[i][3]=’0′,triada[i][2]=’0′;break;}

triada[i][2]=*p;

p++;

if(p>in+strlen(in)) {triada[i][3]=’0′;break;}

triada[i][3]=*p;

p++;

if(p>in+strlen(in)) break;

i++;

}

for(j=0;j=in+1)

{triada[i][3]=*p;

p–;

if(p=0;j–)

if(strcmp(triada[j],”0000″)==0) strcat(out,”0″);

else if(strcmp(triada[j],”0001″)==0) strcat(out,”1″);

else if(strcmp(triada[j],”0010″)==0) strcat(out,”2″);

else if(strcmp(triada[j],”0011″)==0) strcat(out,”3″);

else if(strcmp(triada[j],”0100″)==0) strcat(out,”4″);

else if(strcmp(triada[j],”0101″)==0) strcat(out,”5″);

else if(strcmp(triada[j],”0110″)==0) strcat(out,”6″);

else if(strcmp(triada[j],”0111″)==0) strcat(out,”7″);

else if(strcmp(triada[j],”1000″)==0) strcat(out,”8″);

else if(strcmp(triada[j],”1001″)==0) strcat(out,”9″);

else if(strcmp(triada[j],”1010″)==0) strcat(out,”A”);

else if(strcmp(triada[j],”1011″)==0) strcat(out,”B”);

else if(strcmp(triada[j],”1100″)==0) strcat(out,”C”);

else if(strcmp(triada[j],”1101″)==0) strcat(out,”D”);

else if(strcmp(triada[j],”1110″)==0) strcat(out,”E”);

else if(strcmp(triada[j],”1111″)==0) strcat(out,”F”);

strcat(out,”.”);

i=0;

p=strchr(in,’.’)+1;

while(pin+strlen(in))
{triada[i][3]=’0′,triada[i][2]=’0′,triada[i][1]=’0′;break;}

triada[i][1]=*p;

p++;

if(p>in+strlen(in)) {triada[i][3]=’0′,triada[i][2]=’0′;break;}break;

triada[i][2]=*p;

p++;

if(p>in+strlen(in)) {triada[i][3]=’0′;break;}

triada[i][3]=*p;

p++;

if(p>in+strlen(in)) break;

i++;

}

for(j=0;j=0;i–)

{switch(in[i])

{case ‘1’: x+=1*pow(8,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(8,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(8,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(8,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(8,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(8,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(8,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(8,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};}

else if(dot==1&&minus==0)

{i=0;

for(p=strchr(in,’.’)-1;p>=in;p–)

{switch(*p)

{case ‘1’: x+=1*pow(8,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(8,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(8,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(8,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(8,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(8,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(8,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(8,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};i++;

}

i=-1;

for(p=strchr(in,’.’)+1;p0;i–)

{switch(in[i])

{case ‘1’: x+=1*pow(8,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(8,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(8,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(8,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(8,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(8,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(8,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(8,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};}x*=-1;}

else

{i=0;

for(p=strchr(in,’.’)-1;p>in;p–)

{switch(*p)

{case ‘1’: x+=1*pow(8,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(8,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(8,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(8,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(8,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(8,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(8,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(8,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};i++;

}

i=-1;

for(p=strchr(in,’.’)+1;p=0;i–)

{switch(in[i])

{case ‘1’: x+=1*pow(16,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(16,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(16,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(16,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(16,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(16,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(16,strlen(in)-i-1); break;

case ‘8’: x+=8*pow(16,strlen(in)-i-1); break;

case ‘9’: x+=9*pow(16,strlen(in)-i-1); break;

case ‘A’: x+=10*pow(16,strlen(in)-i-1); break;

case ‘B’: x+=11*pow(16,strlen(in)-i-1); break;

case ‘C’: x+=12*pow(16,strlen(in)-i-1); break;

case ‘D’: x+=13*pow(16,strlen(in)-i-1); break;

case ‘E’: x+=14*pow(16,strlen(in)-i-1); break;

case ‘F’: x+=15*pow(16,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(16,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};}

else if(dot==1&&minus==0)

{i=0;

for(p=strchr(in,’.’)-1;p>=in;p–)

{switch(*p)

{case ‘1’: x+=1*pow(16,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(16,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(16,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(16,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(16,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(16,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(16,strlen(in)-i-1); break;

case ‘8’: x+=8*pow(16,strlen(in)-i-1); break;

case ‘9’: x+=9*pow(16,strlen(in)-i-1); break;

case ‘A’: x+=10*pow(16,strlen(in)-i-1); break;

case ‘B’: x+=11*pow(16,strlen(in)-i-1); break;

case ‘C’: x+=12*pow(16,strlen(in)-i-1); break;

case ‘D’: x+=13*pow(16,strlen(in)-i-1); break;

case ‘E’: x+=14*pow(16,strlen(in)-i-1); break;

case ‘F’: x+=15*pow(16,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(16,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};i++;

}

i=-1;

for(p=strchr(in,’.’)+1;p0;i–)

{switch(in[i])

{case ‘1’: x+=1*pow(16,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(16,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(16,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(16,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(16,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(16,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(16,strlen(in)-i-1); break;

case ‘8’: x+=8*pow(16,strlen(in)-i-1); break;

case ‘9’: x+=9*pow(16,strlen(in)-i-1); break;

case ‘A’: x+=10*pow(16,strlen(in)-i-1); break;

case ‘B’: x+=11*pow(16,strlen(in)-i-1); break;

case ‘C’: x+=12*pow(16,strlen(in)-i-1); break;

case ‘D’: x+=13*pow(16,strlen(in)-i-1); break;

case ‘E’: x+=14*pow(16,strlen(in)-i-1); break;

case ‘F’: x+=15*pow(16,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(16,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};}x*=-1;}

else

{i=0;

for(p=strchr(in,’.’)-1;p>in;p–)

{switch(*p)

{case ‘1’: x+=1*pow(16,strlen(in)-i-1); break;

case ‘2’: x+=2*pow(16,strlen(in)-i-1); break;

case ‘3’: x+=3*pow(16,strlen(in)-i-1); break;

case ‘4’: x+=4*pow(16,strlen(in)-i-1); break;

case ‘5’: x+=5*pow(16,strlen(in)-i-1); break;

case ‘6’: x+=6*pow(16,strlen(in)-i-1); break;

case ‘7’: x+=7*pow(16,strlen(in)-i-1); break;

case ‘8’: x+=8*pow(16,strlen(in)-i-1); break;

case ‘9’: x+=9*pow(16,strlen(in)-i-1); break;

case ‘A’: x+=10*pow(16,strlen(in)-i-1); break;

case ‘B’: x+=11*pow(16,strlen(in)-i-1); break;

case ‘C’: x+=12*pow(16,strlen(in)-i-1); break;

case ‘D’: x+=13*pow(16,strlen(in)-i-1); break;

case ‘E’: x+=14*pow(16,strlen(in)-i-1); break;

case ‘F’: x+=15*pow(16,strlen(in)-i-1); break;

case ‘0’: x+=0*pow(16,strlen(in)-i-1); break;

default : strcpy(out,”Error”); break;

};i++;

}

i=-1;

for(p=strchr(in,’.’)+1;pfrom==DataPtr->to)

strcpy(DataPtr->OutputLine,DataPtr->InputLine);

else if(DataPtr->from==0)

{if(DataPtr->to==1) Bin2Oct(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==2)
Bin2Dec(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==3)
Bin2Hex(DataPtr->InputLine,DataPtr->OutputLine);

}

else if(DataPtr->from==1)

{if(DataPtr->to==0) Oct2Bin(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==2)
Oct2Dec(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==3)
Oct2Hex(DataPtr->InputLine,DataPtr->OutputLine);

}

else if(DataPtr->from==2)

{if(DataPtr->to==0) Dec2Bin(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==1)
Dec2Oct(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==3)
Dec2Hex(DataPtr->InputLine,DataPtr->OutputLine) ;

}

else if(DataPtr->from==3)

{if(DataPtr->to==0) Hex2Bin(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==1)
Hex2Oct(DataPtr->InputLine,DataPtr->OutputLine);

else if(DataPtr->to==2)
Hex2Dec(DataPtr->InputLine,DataPtr->OutputLine);

}

}

//основна функція програми, запускає стартову заставку, потім запускає
клас

//TProgApp

int main()

{

StartWindow();

TProgApp kursova;

kursova.run();

return 0;

}

PAGE

PAGE 39

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Заказать реферат!
UkrReferat.com. Всі права захищені. 2000-2019