Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Алгоритми для виконання операцій з довгими числами

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2017
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмічні основи криптології
Група:
БІ 21

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №1 з курсу: «Алгоритмічні основи криптології» на тему: «Алгоритми для виконання операцій з довгими числами» Варіант 9 Мета роботи Вивчити способи представлення та алгоритми для виконання операцій введення-виведення, порівняння, підсумовування, віднімання довгих чисел та навчитися розробляти програмне забезпечення для реалізації перерахованих алгоритмів на комп’ютері. Завдання Скласти блок-схеми алгоритмів та підпрограми для реалізації операцій введення та виведення довгих чисел. Скласти блок-схеми алгоритмів, підпрограми та програму для реалізації адитивних операцій та операцій порівняння для роботи з довгими числами. / Блок-схема алгоритму / / / Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення convert_to_long_var – функція, що перетворює введені дані у довге число; Sub – функція, що додає два довгих числа; long_var1 та long_var2 – змінні, які містять у собі довгі числа; basis – основа позиційної системи числення; Simile – функція, що виконує порівняння; Текст програми #include <iostream> #include <conio.h> #include <string> using namespace std; int* convert_to_long_var(int*, string, int); int* Sub(int*, int*, int*, int); bool Simile(int*, int*, int); void main() { setlocale(LC_CTYPE, "Ukrainian"); string numb1, numb2; int *long_var1 = new int; int *long_var2 = new int; cout << "n1: "; getline(cin, numb1); cout << "n2: "; getline(cin, numb2); int basis; cout << "basis: "; cin >> basis; cout << endl; long_var1 = convert_to_long_var(long_var1, numb1, basis); cout << endl; long_var2 = convert_to_long_var(long_var2, numb2, basis); for (int i = 1; i < long_var1[0] + 1; i++) { cout << long_var1[i] << ' '; } cout << endl << endl; for (int i = 1; i < long_var2[0] + 1; i++) { cout << long_var2[i] << ' '; } cout << endl << endl; if (Simile(long_var1, long_var2, basis) == true) cout << "Числа рiвнi" << endl; else cout << "Числа не рiвнi" << endl; int *res_long_var = new int; res_long_var = Sub(long_var1, long_var2, res_long_var, basis); cout << endl << "Сума = "; for (int i = 1; i < res_long_var[0] + 1; i++) { cout << res_long_var[i] << ' '; } _getch(); } int* convert_to_long_var(int *long_var, string numb, int basis) { int osn = 0; while (basis % 10 != 1) { basis /= 10; osn++; } int size_numb = numb.size(); int quantity, zero; if (size_numb % osn != 0) { quantity = (size_numb / osn) + 1; zero = osn - (size_numb % osn); } else { quantity = size_numb / osn; zero = 0; } char *tmp = new char[osn]; long_var = new int[quantity + 1]; long_var[0] = quantity; for (int i = 1; i <= quantity; i++) { if (i == quantity) { int j = 0; for (; j < zero; j++) { tmp[j] = '0'; } for (; j < osn; j++) { tmp[j] = (char)numb[size_numb - osn*i + j]; } long_var[quantity - i + 1] = atoi(tmp); for (int t = 0; t < osn; t++) { tmp[t] = ' '; } } else { for (int k = 0; k < osn; k++) { tmp[k] = (char)numb[size_numb-osn*i + k]; } long_var[quantity - i + 1] = atoi(tmp); for (int t = 0; t < osn; t++) { tmp[t] = ' '; } } } return long_var; } int* Sub(int *long_var1, int *long_var2, int *res_long_var, int basis) { int size1 = long_var1[0] + 1; int size2 = long_var2[0] + 1; int size_max, size_min; int *tmp; int counter = 0; while (basis % 10 != 1) { basis /= 10; counter++; } char *_max = new char[counter]; for (int i = 0; i < counter; i++) _max[i] = '9'; int max = atoi(_max); //максимальне число в 1 розряді if (size1 >= size2) { res_long_var = long_var1; tmp = long_var2; size_max = size1; size_min = size2; } else { res_long_var = long_var2; tmp = long_var1; size_max = size2; size_min = size1; } int remainder = 0; for (int i = 1; i < size_min; i++) { res_long_var[size_max - i] += tmp[size_min - i] +...
Антиботан аватар за замовчуванням

28.11.2018 23:11

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини