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

на тему:

Навчальна програма переведення дійсних чисел з 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??

??

#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<=1760;i++) cprintf("%i",random(10)); textcolor(WHITE); gotoxy(30,2); cputs("??????"); gotoxy(46,2); cputs("?????"); gotoxy(29,3); cputs("?"); gotoxy(36,3); cputs("?"); gotoxy(45,3); cputs("?"); gotoxy(51,3); cputs("?"); gotoxy(35,4); cputs("?"); gotoxy(45,4); cputs("?"); gotoxy(51,4); cputs("?"); gotoxy(34,5); cputs("?"); gotoxy(45,5); cputs("?"); gotoxy(51,5); cputs("?"); gotoxy(33,6); cputs("?"); gotoxy(46,6); cputs("?????"); gotoxy(32,7); cputs("?"); gotoxy(45,7); cputs("?"); gotoxy(51,7); cputs("?"); gotoxy(31,8); cputs("?"); gotoxy(45,8); cputs("?"); gotoxy(51,8); cputs("?"); gotoxy(30,9); cputs("?"); gotoxy(45,9); cputs("?"); gotoxy(51,9); cputs("?"); gotoxy(29,10); cputs("????????"); gotoxy(46,10); cputs("?????"); gotoxy(28,13); cputs("?"); gotoxy(33,13); cputs("?????"); gotoxy(44,13); cputs("?"); gotoxy(49,13); cputs("?????"); gotoxy(27,14); cputs("??"); gotoxy(32,14); cputs("?"); gotoxy(38,14); cputs("?"); gotoxy(43,14); cputs("??"); gotoxy(48,14); cputs("?"); gotoxy(28,15); cputs("?"); gotoxy(32,15); cputs("?"); gotoxy(38,15); cputs("?"); gotoxy(44,15); cputs("?"); gotoxy(48,15); cputs("?"); gotoxy(28,16); cputs("?"); gotoxy(32,16); cputs("?"); gotoxy(38,16); cputs("?"); gotoxy(44,16); cputs("?"); gotoxy(48,16); cputs("?"); gotoxy(28,17); cputs("?"); gotoxy(32,17); cputs("?"); gotoxy(38,17); cputs("?"); gotoxy(44,17); cputs("?"); gotoxy(48,17); cputs("??????"); gotoxy(28,18); cputs("?"); gotoxy(32,18); cputs("?"); gotoxy(38,18); cputs("?"); gotoxy(44,18); cputs("?"); gotoxy(48,18); cputs("?"); gotoxy(54,18); cputs("?"); gotoxy(28,19); cputs("?"); gotoxy(32,19); cputs("?"); gotoxy(38,19); cputs("?"); gotoxy(44,19); cputs("?"); gotoxy(48,19); cputs("?"); gotoxy(54,19); cputs("?"); gotoxy(28,20); cputs("?"); gotoxy(32,20); cputs("?"); gotoxy(38,20); cputs("?"); gotoxy(44,20); cputs("?"); gotoxy(48,20); cputs("?"); gotoxy(54,20); cputs("?"); gotoxy(28,21); cputs("?"); gotoxy(33,21); cputs("?????"); gotoxy(44,21); cputs("?"); gotoxy(49,21); cputs("?????"); gotoxy(80,25); delay(900); } } //функція переведення з 8 системи у 2, обробляє вхідний рядок char *in і записує //результат у вихідний рядок char *out void Oct2Bin(char *in,char *out) { char *p,e=1; strcpy(out,""); for(p=in;p=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;i<10;i++) {y*=2; if(y>1) {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) strcat(out,"-"); l=(int)x; while(l!=0) {if(l%8==0) strcat(s,"0"); else if(l%8==1) strcat(s,"1"); else if(l%8==2) strcat(s,"2"); else if(l%8==3) strcat(s,"3"); else if(l%8==4) strcat(s,"4"); else if(l%8==5) strcat(s,"5"); else if(l%8==6) strcat(s,"6"); else if(l%8==7) strcat(s,"7"); l/=8; } for(i=strlen(s)-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;i<10;i++) {y*=8; if(y>1)

{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) strcat(out,"-"); l=(int)x; l x ????u ??x?? ??x?? ??x?? & pF†F F?FIFaFoF ]©¶?¶E¶Y¶o¶u¶ ·Ae·O·ae·o· AE3AE=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;i<10;i++) {y*=16; if(y>1)

{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(p<=in+strlen(in)) {triada[i][0]=*p; p++; if(p>in+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<=i;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==1) {i=0; p=strchr(in,'.')-1; 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″);

strcat(out,».»);

i=0;

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

while(p<=in+strlen(in)) {triada[i][0]=*p; p++; if(p>in+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<=i;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"); } } //функція переведення з 2 системи у 10, обробляє вхідний рядок char *in і //записує результат у вихідний рядок char *out void Bin2Dec(char *in,char *out) { int i,minus=0,dot=0; char * p; double x=0; if(strchr(in,'-')!=NULL) minus=1; if(strchr(in,'.')!=NULL) dot=1; if(minus==0&&dot==0) for(i=strlen(in);i>=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;p<=in+strlen(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--; } } else if(minus==1&&dot==0) {for(i=strlen(in);i>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;

};}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+strlen(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--; } x*=-1; } gcvt(x,8,out); }; //функція переведення з 2 системи у 16, обробляє вхідний рядок char *in і //записує результат у вихідний рядок char *out void Bin2Hex(char *in,char *out) { int i,j,minus=0,dot=0; char triada[32][5],*p=in+strlen(in),*q; strset(out,'\0'); if(strchr(in,'-')!=NULL) minus=1; if(strchr(in,'.')!=NULL) dot=1; if(minus==0&&dot==0) {i=0; 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»);

}

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(p<=in+strlen(in)) {triada[i][0]=*p; p++; if(p>in+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<=i;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==1) {i=0; p=strchr(in,'.')-1; 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»);

strcat(out,».»);

i=0;

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

while(p<=in+strlen(in)) {triada[i][0]=*p; p++; if(p>in+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<=i;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"); } } //функція переведення з 8 системи у 10, обробляє вхідний рядок char *in і //записує результат у вихідний рядок char *out void Oct2Dec(char *in,char *out) { int i,minus=0,dot=0; char * p; double x=0; if(strchr(in,'-')!=NULL) minus=1; if(strchr(in,'.')!=NULL) dot=1; if(minus==0&&dot==0) for(i=strlen(in);i>=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;p<=in+strlen(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--; } } else if(minus==1&&dot==0) {for(i=strlen(in);i>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;

};}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<=in+strlen(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--; } x*=-1; } gcvt(x,8,out); }; //функція переведення з 8 системи у 16, обробляє вхідний рядок char *in і //записує результат у вихідний рядок char *out void Oct2Hex(char *in,char *out) { char s[length]; Oct2Bin(in,s); Bin2Hex(s,out); } //функція переведення з 16 системи у 8, обробляє вхідний рядок char *in і //записує результат у вихідний рядок char *out void Hex2Oct(char *in,char *out) { char s[length]; Hex2Bin(in,s); Bin2Oct(s,out); } //функція переведення з 16 системи у 10, обробляє вхідний рядок char *in і //записує результат у вихідний рядок char *out void Hex2Dec(char *in,char *out) { int i,minus=0,dot=0; char * p; double x=0; if(strchr(in,'-')!=NULL) minus=1; if(strchr(in,'.')!=NULL) dot=1; if(minus==0&&dot==0) for(i=strlen(in);i>=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;p<=in+strlen(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--; } } else if(minus==1&&dot==0) {for(i=strlen(in);i>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;

};}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;p<=in+strlen(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--; } x*=-1; } gcvt(x,8,out); }; //функція, що обробляє дані,введені користувачем у вікні калькулятора (вказівник //на них – параметр struct DialogData * DataPtr) і запускає відповідну до //положення перемикачів функцію переведення даних void Trans(struct DialogData * DataPtr) { if(DataPtr->from==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

Похожие записи