Позиційні системи числення
Створення програми для переведення чисел з довільної системи числення в довільну позиційну. Проектування рядку внесення початкових даних і кінцевого обрахунку для виконання необхідного завдання. Лістинг програми на мові програмування Object Pascal.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 12.10.2014 |
Размер файла | 162,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://allbest.ru
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
КАФЕДРА ПРИКЛАДНОЇ МАТЕМАТИКИ
Звіт
з лабораторної роботи №1
з дисципліни «Дискретні структури»
на тему: «Позиційні системи числення»
Тема: позиційні системи числення (ПСЧ), переведення чисел з десяткової системи числення до довільної ПСЧ та переведення з довільної ПСЧ до десяткової системи числення.
Мета роботи: опанувати правила переведення чисел з десяткової системи числення в довільну ПСЧ і навпаки.
програма позиційний числення
Хід роботи
Кінцевою метою роботи є створення програми для переведення чисел з довільної системи числення в довільну ПСЧ і навпаки. Щоб виконати дане завдання, було обрано мову програмування Object Pascal.
Спершу були створено рядок внесення початкових даних і кінцевого обрахунку для виконання необхідного завдання.
Підбір та використання процедур для переведення ПСЧ з однієї системи числення в іншу.
Реалізація раніше описаних алгоритмів розрахунку засобами та інструментами Pascal ABC.
Перевірка отриманих результатів.
Лістинг програми
program sustemu_chuslennya;
uses
CRT;
const line='--------------------------------------';
sline='---------------';
a: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
c: char;
f:text;
x:string;
n, r: real;
rez, s, s2, s3: string;
t, cc, ind, cc2, k: integer;
{процедура для поділу дробної і целої частини числа}
procedure Del(var ss: string);
var
i: integer;
begin
ind := 0;
s2 := '';
for i := 1 to length(ss) do
if ss[i] in [',', '.'] then
begin
ind := i;
break
end
else
s2 := s2 + ss[i];
s3 := '';
if ind <> 0 then
begin
delete(s, 1, ind);
s3 := ss;
end;
end;
function ToDec(var ss: string; cc: byte): integer;
var
i, n, sum: integer;
begin
sum := 0;
n := length(ss);
for i := 1 to n do
begin
dec(n);
sum := sum + round((pos(ss[i], a) - 1) * exp(ln(cc) * n));
end;
ToDec := sum;
end;
function Cel(d: real; c: integer): string;
var
s: string;
n2: integer;
begin
n2 := round(int(d));
s := '';
repeat
s := ((a[n2 mod c + 1]) + s);
n2 := n2 div c;
until (n2 = 0);
Cel := s;
end;
function Drob(var d: real; t, c: integer): string;
var
s: string;
l2, k, n3: real;
i, l: integer;
begin
k := d - int(d);
s := '';
i := 0;
if t <> 0 then
begin
repeat
l2 := k * c;
k := frac(l2);
s := s + a[round(int(l2)) + 1];
until i = t;
end
else
s := '0';
Drob := s;
end;
function drob2(ss: string; c: integer): real;
var
i: integer;
sum: real;
begin
for i := 1 to length(ss) do
sum := sum + (pos(ss[i], a) - 1) * exp(ln(c) * -i);
drob2 := sum;
end;
label metka;
begin textbackground(Blue);//светло-серый
textcolor(Yellow);
ClrScr;
write('Ви бажаєте перевести число з будь-якої системи числення в іншу? ');
readln(x);
metka:
if ((x='так') or (x='Так')) then begin
repeat
writeln(line);
write('Введіть систему числення з якої бажаєте перевести: ');
readln(cc2)
until cc2 in [2..36]; {проверка ввода}
writeln(line);
write('Введіть систему числення в яку бажаєте перевести: ');
readln(cc);
if cc2 = 10 then {если перевод из 10 то юзаем функции Cel и Drob}
begin
writeln(line);
write('Введіть число в ', cc2, '-й системі числення: ');
readln(n);
writeln(line);
{write('Введіть число: '); }
{readln(t); }
if ((n - round(int(n))) = 0) then {если дробная часть числа=0 то юзаем Cel}
rez := Cel(n, cc)
else {иначе юзаем обе и добавляем , между дробной и целой}
rez := Cel(n, cc) + ',' + Drob(n, t, cc);
end
else {иначе если перевод не из 10-й СС}
begin
writeln(line);
write('Введіть число в ', cc2, '-й системі числення: ');
readln(s);
Del(s); {разбиваем на дробную и целую части строку}
if ind = 0 then
rez := Cel(ToDec(s2, cc2), cc) {переводим сначала из любой в 10-ю сс, а затем из
10-й в любую}
else
begin
r := drob2(s3, cc2); {переводим дробную часть числа}
rez := Cel(ToDec(s2, cc2), cc) + ',' + drob(r, length(s3), cc); {переводим из любой сс
в другую }
end;
end;
writeln(rez); { THE END }
readkey;
writeln(line);
writeln('Бажаєте здійснити переведення числа ще раз?');
readln (c);
if (x='так') then goto metka
else
begin
if (x='ні') then Halt(1);
end;
end;
end.
Форми програми:
Контрольні запитання
Визначення системи числення (Системою числення називається сукупність правил і знаків за допомогою яких можна відобразити будь-яке невід'ємне число).
Класифікація СЧ (Системи числення бувають:
позиційні (двійкова, десяткова);
змішані (фібоначчі);
непозиційні (римська)).
Визначення позиційної СЧ (Позиційна СЧ - це така система числення, де цифра у записі числа залежно від свого розташування змінює саме число, тобто цифра має свою вагу у числі).
Основні ПСЧ що використовуються в обчислювальній техніці (16-ва, 8-ва, та 2-ва системи числення).
Аналітичні розрахунки
256(10) 5
256/5=51 (ост. 1)
51/5=10 (1)
10/5 = 2 (0)
Отже, вірна відповідь - 2011.
Висновок
В даній лабораторній роботі були засвоєні основні поняття, які стосуються позиційних систем числення, створено універсальний алгоритм для здійснення переведень з десяткової системи числення в іншу ПСЧ і навпаки та реалізовано даний алгоритм на необхідній мові програмування.
Размещено на Allbest.ru
Подобные документы
Методи алгоритмiчного описаня задач, програмування на основi стандартних мовних засобiв. Переклад з однієї системи числення в іншу при програмуванні. Системи числення. Двійкові системи числення. Числа з фіксованою і плаваючою комою. Програмна реалізація.
курсовая работа [164,1 K], добавлен 07.12.2008Написання програми для мобільного приладу, яка буде переводити числа з однієї системи числення в іншу. Розробка графічного інтерфейсу, яким зручно буде користуватись. Опис процедур, обробників та мови програмування. Дослідження логічних частин програми.
курсовая работа [1,2 M], добавлен 27.08.2014Аналіз математичного підґрунтя двійкової та двійкової позиційної систем числення. Переведення числа з двійкової системи числення в десяткову та навпаки. Арифметичні дії в двійковій системі. Системи числення з довільною основою. Мішані системи числення.
курсовая работа [149,5 K], добавлен 20.06.2010Розробка програмного забезпечення для розв’язування задачі обчислювального характеру у середовищі Turbo Pascal 7.0. Розгляд систем числення. Практична реалізація задачі переводу чисел з однієї системи числення у іншу. Процедура зворотного переводу.
курсовая работа [112,2 K], добавлен 23.04.2010Практичне застосування систем кодування знакової та графічної інформації в електронних обчислювальних машинах. Позиційні системи числення. Представлення цілих і дійсних чисел. Машинні одиниці інформації. Основні системи кодування текстових даних.
практическая работа [489,5 K], добавлен 21.03.2012Характеристика формування навичок розробки додатків із використанням кнопкових компонентів у середовищі програмування Visual Studio. Створення програми, що переводить числа з однієї системи числення до іншої. Особливість застосування додатку Converter.
практическая работа [249,7 K], добавлен 01.12.2022Принципи побудови систем числення, основні поняття. Системи числення, вид та тип числа, форма представлення, розрядна сітка та формат, діапазон і точність подання, спосіб кодування від’ємних чисел. Визначення та призначення тригерів, їх класифікація.
контрольная работа [150,9 K], добавлен 07.10.2009Принцип роботи машини тюрінга - математичного поняття, введеного для формального уточнення інтуїтивного поняття алгоритму. Опис алгоритмів арифметичних дій в шістнадцятковій системі числення. Правила переведення чисел з однієї системи числення в іншу.
курсовая работа [1,4 M], добавлен 31.01.2014Правило перекладу цілих чисел з різних систем числення в будь-яку іншу. Правило переходу правильних десяткових дробів. Розробка інтерфейсу користувача. Алгоритмізація і програмування рішення задачі. Налагодження і тестування програми "Калькулятор".
курсовая работа [1022,7 K], добавлен 26.01.2013Розробка кросплатформового інструменту електронного тестування учнів молодших та середніх класів по іноземній мові. Вибір середовища розробки та системи контролю версій. Опис мови програмування Java та лістинг програми. Апаратні та програмні вимоги.
дипломная работа [608,3 K], добавлен 26.10.2010