Програма переводу з однієї системи числення у іншу

3

ЗМІСТ



	Вступ

	Розділ 1. Системи числення

	Розділ 2. Методи та засоби розв'язку задачі

	Розділ 3. Практична реалізація розв'язку задачі

	Висновки

	Список використаної літератури.

	Додаток А. Текст програми

	Додаток В. Тест програми


Вступ



Головним напрямком науково-технічного прогресу в наш час є розвиток методів і засобів обчислювальної техніки. Використання методів математичного моделювання і розв’язування інженерних задач на ЕОМ позволяє значно підвищити ефективність процесів проектування і управління.

Застосування персональних комп’ютерів, розширення можливостей міні- та мікро-ЕОМ, створення потужних ЕОМ п’ятого покоління, розвиток математичного моделювання привели до розширення як практичної так і теоретичної бази обчислювальної математики. Розвивається новий науковий напрям - інформатика, який об’єднує широке коло питань, пов’язаних з розробкою і впровадженням методів і засобів математичного моделювання, обробки інформації і обчислень на ЕОМ.

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

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

Завдання на курсовий проект передбачає розробку програмного забезпечення для розв’язування задачі обчислювального характеру, тому для створення програми було вибрано середовище Turbo Pascal 7.0. 

Розробник системи програмування Turbo Pascal - фірма Borland International виникла в 1984 році і за порівняно короткий час неодноразово дивувала користувачів персональних ЕОМ своїми Turbo системами. Було випущено на ринок програмних продуктів декілька версій Turbo Pascal: 3.0, 4.0, 5.0, 5.5, 6.0, 7.0, Pascal for Windows, Borland Pascal.

Головні особливості мови Turbo Pascal:

широкий спектр даних;

можливість обробки стрічкових та структурних даних;

достатній набір операторів керування розгалуженнями та циклами;

відносно слабкі можливості вводу-виводу даних порівняно з іншими мовами високого рівня (Turbo C та PL/1);

добре розвинутий апарат підпрограм;

зручні конструкції роботи з файлами;

великі можливості керування всіма ресурсами комп’ютера;

різноманітні варіанти стикування з мовою Асемблера;

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

підтримка ідей об’єктно-орієнтованого програмування (ООП).

Курсовий проект складається зі вступу, двох розділів, висновків, списку використаної літератури, графічної частини та додатків. 


Розділ 1. Системи числення



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

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

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

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

У добре нам відомій з дитинства десятковій позиційній системі числення для запису будь-якого числа використовуються десять цифр (підстава системи 10) причому кожна цифра в числі несе подвійну інформацію: по-перше, своє власне значення-2;3;4...., а по-друге, місце яких вона займає в записі числа.

Розглянемо приклад числа: 1579320.

Занумеруємо всі розряди справа наліво, причому звичний нам розряд одиниць будемо вважати нульовим; тоді розряд десятків буде першим, сотень другим, тисяч третім і так далі. Така нумерація дуже природна, оскільки одиниці – це 10 у нульовому ступені, десятки – 10 у першої, сотні – 10 у другий і т.д., тобто розташування тієї чи іншої цифри в записі числа є не що інше, як пряма вказівка, якою ступенем 10 його можна замінити. А саме значення цифри показує, скільки разів треба взяти 10 у заданому ступені. Таким чином, остаточно наше число запишеться в наступному виді: 1*106+5*105+7*104+9*103+3*102+2*101+0*100 .

У загальному випадку запис будь-якого змішаного числа в системі числення з основою p буде являти собою ряд виду:


 	(1.1)



Послідовність цифр числа‚ розміщених справа від а0 називається дробовою частиною числа‚ послідовність  - цілою частиною числа.

В ЕОМ та при підготовці задач для розв’язування на них крім десяткової системи числення застосовуються й інші - двійкова‚ вісімкова та шістнадцяткова.



Розділ 2. Методи та засоби розв'язку задачі



Задачу переводу з однієї системи числення (з основою p) в іншу систему (з основою q) можна розглядати у двох варіантах (випадках).

Варіант 1. Найбільш простий випадок - перевід з системи з основою p в систему з основою q (і навпаки)‚ якщо має місце співвідношення  (k - ціле додатне число). 

У цьому випадку перевід з системи з основою p в систему з основою q () здійснюють порозрядно‚ замінюючи кожну p-у цифру рівним їй k - розрядним числом‚ записаним в системі з основою числення q. 

Зворотний перевід () здійснюють таким чином. Рухаючись від коми вправо і вліво‚ розбивають число‚ записане в системі числення з основою q на групи по k цифр. Якщо при цьому найлівіша або сама найправіша група виявиться неповною‚ то до неї дописують відповідно зліва чи справа стільки цифр‚ щоб кожна з них містила k цифр. Після цього кожну групу q-вих цифр замінюють однією p-овою цифрою‚ котра дорівнює числу‚ позначеному цією групою q-вих цифр.

Приклад 1. Системи числення з основою‚ кратною 2:

а) вісімкове число 273‚54 переводиться у двійкову систему (8 = 23) так:



273‚548 = (010)(111)(011)‚(101)(100)=10111011‚10112 ;

б) двійкове число 11011‚0011 переводиться у вісімкову систему числення так: 



1011‚00112 = 11(011)‚(001)1 = (011)(011)‚(001)(100) = 33‚148 ;



в) шістнадцяткове число A5,B1E переводиться в двійкову систему числення (16 = 24) так: 



A5,B1E16 = (1010)(0101),(1011)(0001)(1110) = 10100101,101100011112



Випадок 2. Перевід з системи з основою p в систему з основою q‚ якщо має місце співвідношення  (k - ціле додатне число)‚ здійснюється окремо для цілої та дробової частин.

Перевід цілої частини числа. Число q записують в p-мі системі числення. Ділять в p-вій системі цілу частину числа на q і отримують остачу‚ яка є останньою цифрою шуканого числа. Отриману частку знову ділять на q і отримують остачу‚ яка є передостанньою цифрою шуканого числа і т.д. процес продовжують до тих пір‚ поки остача не стане меншою ‚ ніж число q. Остання остача буде першою (старшою) цифрою числа.

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

Приклад 2. Переведемо число 191‚687510 у вісімкову систему числення. Спочатку переводимо цілу частину:




191

8



16

23

8

 31

16

2

 24

7



   7







Таким чином‚ 19110 = 2778. Тепер переводимо двійкову частину:



0

6875



8

5

5000



8

4

0000



Таким чином‚ 0,687510 = 0,548. Остаточно‚ отримуємо 191,687510 = 277‚548.

Як бачимо‚ алгоритми переводу з однієї системи числення в іншу є надзвичайно простими‚ що дає змогу доволі просто здійснити їх реалізацію на ПК.



Розділ 3. Практична реалізація розв'язку задачі



Практична реалізація задачі переводу чисел з однієї системи числення у іншу здійснена для напрямків: десяткова система числення  двійкова‚ вісімкова та шістнядцяткова системи та навпаки. Для розв’язку даної задачі розроблено модуль calc.tpu та програму kurs2.pas (текст представлено в додатку А).

В модулі реалізовано ряд процедур.

Процедура Hide_cursor. Робить курсор невидимим. Використовує процедуру Set_cursor та стандартну процедуру Intr .

Процедура Max_cursor. Встановлює вказівник курсора у вигляді прямокутника. Використовує процедуру Set_cursor.

Процедура Standart_cursor. Перетворює вказівник курсора до стандартного вигляду NBU(Non blinking nderline). Використовує процедуру Set_cursor.

Процедура Inf. Виводить на екран інформацію по програму та автора. 

Процедура Check. Виконує перевірку на коректність числа‚ яке підлягає переводу. Перевірка здійснюється для всіх систем числення‚ вказаних вище. Для всіх систем числення довжина числа‚ що підлягає переводу не повинна перевищувати 20 цифр. Якщо ж ця умова не виконується‚ то виводиться повідомлення “Переповнення!”. Крім того‚ процедура перевіряє введене число на допустимість цифр. Для двійкової системи числення число може містити тільки цифри 0 та 1. Для вісімкової системи числення число повинно містити цифри від 0 до 7. Для шістнядцяткової системи число може містити довільні цифри (від 0 до 9) та символи A,B,C,D,E,F. Якщо перелічені умови не виконуються‚ то виводиться повідомлення “Недопустиме число!”.

Процедура Convert_to_10. Здійснює перевід числа з довільної системи числення у десяткову систему. В якості вхідного параметра використовує основу системи числення (system). Викликає процедуру Check.

Процедура Ten_to. Здійснює перевід з десяткової системи числення у довільну (з перелічених вище). Основа системи числення передається у процедуру у якості вхідного параметра (system). Викликає процедуру Check.

В програмі реалізовано наступні процедури:

Процедура Golovnemenu. Виводить на екран дисплея меню програми‚ котре пропонує користувачеві наступні опції: “Перевід з 10”‚ “Перевід в 10”‚ “Допомога”‚ “Вихід”. Переміщення по пунктах меню здійснюється з допомогою клавіш керування курсором‚ вибір опції меню здійснюється при натисканні клавіші Enter.

Процедура Sub_ten_to_. При виборі опції “Перевід з 10” реалізує спадне меню‚ яке пропонує користувачеві наступні опції “У двійкову”‚ “У вісімкову”‚ “У шістнадцяткову”. Переміщення по пунктах меню здійснюється з допомогою клавіш керування курсором‚ вибір опції меню здійснюється при натисканні клавіші Enter.

Процедура Sub_to_ten. При виборі опції “Перевід в 10” реалізує спадне меню‚ яке пропонує користувачеві наступні опції “З двійкової”‚ “З вісімкової”‚ “З шістнадцяткової”. Переміщення по пунктах меню здійснюється з допомогою клавіш керування курсором‚ вибір опції меню здійснюється при натисканні клавіші Enter.

При роботі з програмою встановлюються такі вимоги до системи:

x86 персональний комп'ютер (386 мінімум; 486, Pentium, або Pentium Pro) 

Microsoft DOS 3.30 або вище

Microsoft Windows 3.1, Microsoft Windows for Workgroups, Microsoft Windows 95, Microsoft Windows NT 3.51 чи 4.0

512 Kb RAM

розмір програми 18112 байтів

Для запуску програми необхідно запустити на виконання файл Kurs2.exe і далі використовувати головне меню програми.


Висновки



Завершивши роботу над курсовим проектом можна зробити висновок про те, що мені вдалося досягти своєї мети і розробити програму переводу з однієї системи числення у іншу. За допомогою засобів алгоритмічної мови Turbo Pascal було створено програму Kurs2‚ яка дозволяє здійснювати перевід чисел з двійкової‚ вісімкової та шістнадцяткової систем числення у десяткову систему числення та навпаки. Використання методики процедурного програмування дало змогу досить просто справитись з поставленою задачею.  

В програмі реалізовано дворівневе меню‚ що дає змогу користувачеві просто користуватись нею. Програма протестована і скопільована у вигляді незалежного exe-файла‚ що значно спрощує її запуск і понижує вимоги до обладнання. 


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



		Н.А. Криницкий‚ Г.А. Миронов‚ Г.Д. Фролов. Программирование и алгоритмические языки. М., Наука. 1978. 512 с.

		В.Я. Сердюченко. Розробка алгоритмів та прграмування мовою Turbo Pascal. - Х.: «Паритет», 1995. - 349 с.

		Д. Ван Тассел. Стиль, разработка, эффективность, отладка и испытание программ. М.: «Мир», 1985. - 332 с.


Додаток А. Текст програми



program Kurs2;

uses Crt,dos,calc;

label m1,m2,m3,m4;



const poz=2;

   poz1=3;

type fak=(ten_to_,_to_ten,fild1,help,exit);

   fak1=(ten_to_two,ten_to_eight,ten_to_sixteen);

   fak2=(two_to_ten,eight_to_ten,sixteen_to_ten);



const rab:array[fak] of string [16] =

   (' ПЕРЕВЎД З 10 ',' ПЕРЕВЎД В 10 ','        ','  ДОПОМОГА   ','   ВИХЎД   ');

   rab1:array[fak1] of string [17] =

   (' В ДВЎЙКОВУ   ',' В ВЎСЎМКОВУ   ',' В ШЎСНАДЦЯТКОВУ ');

   rab2:array[fak2] of string [18] =

   (' З ДВЎЙКОВО°   ',' З ВЎСЎМКОВО°   ',' З ШЎСНАДЦЯТКОВО°  ');



var dov:fak;

  dov1:fak1;

  dov2:fak2;

  sim:char;

  x1,x2,y1,y2:integer;



procedure ramka1;

var i:integer;

begin

  TextColor(0);

  gotoxy(x1,y1);write('-');

  for i:=1 to x2-x1-1 do write('-');write('¬');

  for i:=1 to y2-y1-1 do begin

  gotoxy(x2,y1+i);write('¦');

  gotoxy(x1,y1+i);write('¦');end;

  gotoxy(x1,y2); write('L');

  for i:=1 to x2-x1-1 do write('-');write('-');

end;



procedure Golovnemenu;

var s:fak;nom:integer;

begin

textbackground(white);textcolor(0); x1:=1;y1:=0;

for s:=ten_to_ to exit do

if s=dov then begin

  textbackground(green);

  gotoxy(x1,y1+1); write(rab[s]);

  textcolor(2); textbackground(white);

  textcolor(0); x1:=x1+16;

  end

else begin

  gotoxy(x1,y1+1); write(rab[s]);

  x1:=x1+16;

end;

gotoxy(1,24);write('     *** Calculator Version 1.0 Copyright (c) 1997 by L.Tarasenko ***    ');

end;



procedure sub_ten_to_;

var s:fak1;

  n:integer;

begin

   x1:=1;y1:=2;x2:=19;y2:=6;ramka1;

   for s:=ten_to_two to ten_to_sixteen do

   if s=dov1 then begin

    n:=poz1+ord(s);

    textbackground(green);

    gotoxy(x1+1,n); write(rab1[s]);

    textcolor(2); textbackground(white);

    textcolor(0);

    end

  else begin

   textbackground(white);textcolor(0);

   n:=poz1+ord(s);

   gotoxy(x1+1,n); write(rab1[s]);

   end;

end;



procedure sub_to_ten;

var s:fak2;

  n:integer;

begin

   textbackground(white);textcolor(0);

   x1:=16;y1:=2;x2:=35;y2:=6; ramka1;

   for s:=two_to_ten to sixteen_to_ten do

   if s=dov2 then begin

    n:=poz1+ord(s);

    textbackground(green); textcolor(0);

    gotoxy(x1+1,n);

    write(rab2[s]);

    textcolor(2);

    textbackground(white);

    end

  else begin

    textbackground(white);

    textcolor(0);

   n:=poz1+ord(s);

   gotoxy(x1+1,n);

   write(rab2[s]);

   end;

end;



begin

  window(1,1,80,25);textbackground(0);

  m2:screen;

   dov:=ten_to_;

   repeat{1}

   golovnemenu;

   repeat{2}

    sim:=readkey;

    if(sim=#0) and keypressed then sim:=readkey;

      case sim of

        #77:begin

          if dov <> exit then dov:=succ(dov)

                else dov:=ten_to_;

          if dov=fild1 then dov:=help;

          end;

        #75:begin

          if dov<> ten_to_ then dov:=pred(dov)

               else dov:=exit;

          if dov=fild1 then dov:=_to_ten;

          end;

        #27:begin;clrscr;halt;end;

      end;

    golovnemenu;

   until sim=#13;

      case dov of

        ten_to_:begin

            repeat{1}

            sub_ten_to_;

            repeat{2}

            sim:=readkey;

            if(sim=#0) and keypressed then sim:=readkey;

            case sim of

            #80:if dov1 <> ten_to_sixteen then dov1:=succ(dov1)

                else dov1:=ten_to_two;

            #72:if dov1<> ten_to_two then dov1:=pred(dov1)

                else dov1:=ten_to_sixteen;

            #27:begin screen;goto m1;end;

            #75:begin

              if dov<> ten_to_ then dov:=pred(dov)

                else dov:=exit;screen;goto m1;

              end;

            #77:begin

              if dov <> exit then dov:=succ(dov)

                else dov:=ten_to_;screen;goto m1;

              end;

           end;

           sub_ten_to_;

           until sim=#13;

            case dov1 of

            ten_to_two:begin ten_to(2);screen;

                 golovnemenu;goto m4;end;

            ten_to_eight:begin ten_to(8);screen;

                 golovnemenu;goto m4;end;

            ten_to_sixteen:begin ten_to(16);screen;

                 golovnemenu;goto m4;end;

           end;

          m4:until false;

          end;

      _to_ten:begin

           repeat{1}

           sub_to_ten;

           repeat{2}

           sim:=readkey;

           if(sim=#0) and keypressed then sim:=readkey;

           case sim of

            #80:if dov2 <> sixteen_to_ten then dov2:=succ(dov2)

                else dov2:=two_to_ten;

            #72:if dov2<> two_to_ten then dov2:=pred(dov2)

               else dov2:=sixteen_to_ten;

            #27:begin screen;goto m1;end;

            #75:begin

              if dov<> ten_to_ then dov:=pred(dov)

              else dov:=exit;screen;goto m1;

              end;

            #77:begin

              if dov <> exit then begin

              dov:=succ(dov);dov:=succ(dov);end

              else dov:=ten_to_;screen;goto m1;

              end;

           end;

           sub_to_ten;

           until sim=#13;

           case dov2 of

            two_to_ten:begin convert_to_10(2);screen;

                 golovnemenu;goto m3;end;

            eight_to_ten:begin convert_to_10(8);screen;

                  golovnemenu;goto m3;end;

            sixteen_to_ten:begin convert_to_10(16);screen;

                   golovnemenu;goto m3;end;

           end;

           m3:until false;

          end;

       help:begin;inf;screen;end;

       exit:begin;clrscr;halt;end;

       end;

      m1:screen;

      until false;

     end.



unit calc;

interface

procedure inf;

procedure screen;

procedure hide_cursor;

procedure max_cursor;

procedure standart_cursor;

procedure convert_to_10(system:integer);

procedure ten_to(system:integer);

implementation

uses crt,strings,dos,time;



procedure set_cursor(begline,endline:byte);

var regs:registers;

begin

with regs do

begin

ah:=$01;

ch:=begline;

cl:=endline;

end;

intr($10,regs);

end;



procedure hide_cursor;

var begline,endline:byte;

begin

begline:=$20;

endline:=$00;

set_cursor(begline,endline);

end;



procedure max_cursor;

var begline,endline:byte;

begin

begline:=$00;

if lastmode=mono then endline:=$0c

         else endline:=$07;

set_cursor(begline,endline);

end;



procedure standart_cursor;

var begline,endline:byte;

begin

if lastmode=mono then begin

  begline:=$0b;

  endline:=$0c;

  end else

  begin

  begline:=$06;

  endline:=$07;

  end;

set_cursor(begline,endline);

end;



procedure ramka(x1,y1,x2,y2:integer);

var i:integer;

begin

  textbackground(white);textcolor(0);

  gotoxy(x1,y1);write('-');

  for i:=1 to x2-x1-1 do write('-');write('¬');

  for i:=1 to y2-y1-1 do begin

   gotoxy(x2,y1+i);write('¦');

   gotoxy(x1,y1+i);write('¦');

          end;

  gotoxy(x1,y2);write('L');

  for i:=1 to x2-x1-1 do write('-');write('-');

end;


procedure screen;

var i: integer;

 begin

 clrscr;

 textbackground(0);

 TextColor(Blue);

 for i:=2 to 25 do begin

 write('--------------------------------------------------------------------------------');

end;

end;



procedure init;

begin

screen; ramka(1,3,80,24);

get_date(3,3); gotoxy(1,2);

textbackground(0); textcolor(green);

write('               " К У Р С О В А "                ');

gotoxy(1,25);write('       *** Версўя 1.0 (с) 2002 Л.Тарасенко ***        ');

end;



procedure inf;

begin

init;

 gotoxy(24,8);write('г=============================¬');

 gotoxy(24,9);write('¦   Програма переводу   ¦ ');

gotoxy(24,10);write('¦  чисел з однўї• системи  ¦ ');

gotoxy(24,11);write('¦    числення в ўншу   ¦ ');

gotoxy(24,12);write('¦     Версўя 1.0     ¦ ');

gotoxy(24,13);write('¦     17.09.2002     ¦ ');

gotoxy(24,14);write('¦   Автор : Л.Тарасенко   ¦ ');

gotoxy(24,15);write('¦               ¦ ');

gotoxy(24,16);write('L=============================- ');

gotoxy(25,17);write('                ');

readkey;

end;



procedure check(system:integer;num:string);

var i,error:integer;

label e,ok,m2;

begin

for i:=1 to length(num) do begin

num[i]:=upcase(num[i]);

if length(num) >= 20 then begin

    gotoxy(24,12);write('               ');

    gotoxy(35,15);

    write('Переповнення');goto ok;

    end;

if system=2 then if (num[i]<>'1') and (num[i]<>'0') then goto e;

if system=16 then

   if (num[i]<>'A') and (num[i]<>'B') and

     (num[i]<>'C') and (num[i]<>'D') and

     (num[i]<>'E') and (num[i]<>'F') and

     (num[i]>'9') then goto e;

if system=8 then if (num[i]>'9') then goto e;

if system=10 then if (num[i]>'9') then goto e;

end;goto ok;

e:begin gotoxy(24,13);write('               ');

    gotoxy(35,16);

    textcolor(red);

    write('Недопустиме число ');

    end;

ok:end;



procedure convert_to_10(system:integer);

var num_out,num:string;

  val_num,i,count:longint;

  sum:real;

  code,y:integer;

  ch:char;

  label m1;



begin

repeat

init;y:=6;

max_cursor;

textcolor(white);textbackground(0);

for i:=1 to 14 do begin

gotoxy(22,y);inc(y);write('                  ');

end;

ramka(21,5,55,18);

textcolor(0);textbackground(green);

gotoxy(24,7);write('Введўть число в ',system,'-ўй системў:');

gotoxy(24,11);write(' Число в 10-ўй системў рўвне:');

gotoxy(24,16);write(' Помилка:');

textcolor(white);textbackground(white);

gotoxy(24,9);write('               ');

gotoxy(24,13);write('               ');

gotoxy(34,16);write('          ');

gotoxy(25,9);textcolor(0);textbackground(white);

readln(num);

  num_out:='';

  sum:=0;

  count:=length(num);

  for i:=0 to length(num) do begin

   num[i]:=upcase(num[i]);

    if num[i]='A' then sum:=sum+10*exp(count*ln(system));

    if num[i]='B' then sum:=sum+11*exp(count*ln(system));

    if num[i]='C' then sum:=sum+12*exp(count*ln(system));

    if num[i]='D' then sum:=sum+13*exp(count*ln(system));

    if num[i]='E' then sum:=sum+14*exp(count*ln(system));

    if num[i]='F' then sum:=sum+15*exp(count*ln(system));

    val(num[i],val_num,code);

    if val_num<10 then sum:=sum+val_num*exp(count*ln(system));

    count:=count-1;

    end;

    textcolor(0);textbackground(white);

  gotoxy(25,13);write(sum:0:0);

  check(system,num);

  textbackground(0);

hide_cursor;

textcolor(green);

gotoxy(32,18);write(' ESC - ВИХЎД ');

ch:=readkey;

until ch=#27;

end;



procedure ten_to(system:integer);

const n=30;sys=10;

var a,f,x,y:longint;

  b,d:real;

  c:array[1..n] of byte;

  code,i:integer;

  num:real;

  number:string;

  ch:char;

begin

repeat

init;y:=6;

max_cursor;

for i:=0 to n do c[i]:=0;

for i:=1 to 14 do begin

gotoxy(22,y);inc(y);write('                  ');

end;

ramka(21,5,55,18);

textbackground(green);textcolor(0);

gotoxy(24,7);write('Введўть число в 10-ўй системў:');

gotoxy(24,11);write(' Число в ',system,'-ўй системў рўвне: ');

gotoxy(24,16);write(' Помилка:');

textcolor(white);textbackground(white);

gotoxy(24,9);write('               ');

gotoxy(24,13);write('               ');

gotoxy(34,16);write('          ');

gotoxy(25,9);textcolor(0);textbackground(white);

readln(number);

i:=0;

val(number,num,code);

a:=trunc(num);

repeat

inc(i);

f:=trunc(a/system);

c[i]:=a-f*system;

a:=f;

until a<system;

inc(i);c[i]:=f;

gotoxy(25,13);

textcolor(0);textbackground(white);

repeat

if c[i]=10 then write('A');

if c[i]=11 then write('B');

if c[i]=12 then write('C');

if c[i]=13 then write('D');

if c[i]=14 then write('E');

if c[i]=15 then write('F');

if c[i]<10 then write(c[i]);

dec(i);

until i<1;

  check(sys,number);

  textbackground(0);

hide_cursor;

textcolor(green);

gotoxy(32,18);write(' ESC - ВИХЎД ');

ch:=readkey;

until ch=#27;

end;



begin



end.


Додаток В. Тест програми



Тест проводився на робочій станції з наступною конфігурацією:

		Pentium 166

		32 Mb RAM

		SyncMaster 17Glsi

		S3 Trio64V+

		Windows 95



У результаті тестів були отримані наступні результати:



Малюнок 1


Малюнок 2



		Малюнок 3

28