Санкт-Петербурзький Державний Політехнічний Університет
Інститут прикладної математики і механіки
Кафедра Телематика (при ЦНДІ РТК)
Курсова робота
з дискретної математики
«Калькулятор великий« кінцевої »арифметики»
Роботу виконав: Подорова А. Я.
Перевірив: Востров А.В.
Санкт-Петербург 2013
Зміст
Введення
. Особливості реалізації
. Реалізація таблиць малої арифметики
. 1 Реалізація побудови таблиць додавання і перенесення по додаванню
. 2 Реалізація побудови таблиць множення і перенесення по множенню
. Реалізація арифметичних дій
. 1 Реалізація додавання і віднімання
. 2 Реалізація множення
. 3 Реалізація поділу
. 4 Реалізація порівняння
Висновок
Список використаної літератури
Програми
Введення
Сформувати калькулятор великий «кінцевої» арифметики lt; Z i; +, * gt; (мінімум 8 розрядів) для чотирьох дій (+, -, *, /) на основі малої «кінцевої» арифметики, де задане правило «+1» і виконуються властивості коммутативности (+, *), асоціативності (+), дистрибутивності * щодо +, задані адитивна одиниця «0» і мультиплікативна одиниця «1», х * 0=0.
За бажанням реалізувати пошук НСД для двох чисел.
№Z i + 1 01234567811Z 9 13062475-
1. Особливості реалізації
. Алгоритм програми містить у собі побудова таблиць (у вигляді двовимірних масивів, по строго заданому правилу «+1») складання, множення, перенесення по додаванню і перенесення по множенню.
. Програма виконує стандартні бінарні операції (+, -, *, /). На вхід береться два числа і одна з даних операцій.
. Програма підтримує роботу з негативними числами.
2. Реалізація таблиць малої арифметики
2.1 Реалізація побудови таблиць додавання і перенесення по додаванню
void SetPlus (int a, int b)
{n=0; temp=a;
{= Find (temp); ++;
} (temp!=0);=b; (int i=0; i lt; n; i ++)=Plus [1] [temp]; (temp == 0 amp; amp; a !=0) [a] [b]=1;
} [a] [b]=temp;
}
На вхід функція бере дві цифри. Перша цифра розкладається на суму одиниць, і потрібну їх кількість додається до другого числа за правилом «+1». Результат: їх сума в нашій арифметиці, яка вноситься до відповідну комірку відповідної таблиці. Заповнення таблиці додавання і його доповнення йде одночасно.
2.2 Реалізація побудови таблиць множення і перенесення по множенню
void SetMult (int a, int b)
{temp=0, tempB=b; (tempB gt; 0)
{= Summ (temp, a, 1);=Summ (tempB, 1,0);
} [a] [b]=temp% 10; [a] [b]=(b == 0)? 0: temp/10;
}
На вхід береться дві цифри. При вирахуванні з другої цифри одиниці до проміжного результату додається перша цифра, це відбувається до тих пір, поки другий число не розкладеться на суму одиниць повністю, тобто поки tempB НЕ буде дорівнює 0. Тобто твір представлено як сума першої цифри n раз, де n - кількість одиниць, на яке розклалася друга цифра.
Результат: їх твір у нашій арифметиці, яке вноситься до відповідної осередок відповідної таблиці. Заповнення таблиці множення і його доповнення йде одночасно.
3. Реалізація арифметичних дій
.1 Реалізація додавання і віднімання
int Summ (int a, int b, bool p)
{rez=0, bp=0; ostA=a, ostB=b, tempA, tempB; i=1; (i; ostA gt; 0 || ostB gt; 0; i *=10)
{=ostA%10;=(p)?ostB%10:ObratPlus(ostB%10);+=Plus[Plus[tempA][tempB]][bp]*i;(p==true)=PlusP[te...