АЛГОРИТМИ ДЛЯ ВИКОНАННЯ ОПЕРАЦІЙ З ДОВГИМИ ЧИСЛАМИ

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

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

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

Рік:
2024
Тип роботи:
Практична робота
Предмет:
Алгоритми

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / АЛГОРИТМИ ДЛЯ ВИКОНАННЯ ОПЕРАЦІЙ З ДОВГИМИ ЧИСЛАМИ Практична робота № 1 Варіант № 2 Львів – 2010р. Мета роботи: вивчити способи представлення та алгоритми для виконання операцій введення-виведення, порівняння, підсумовування, віднімання довгих чисел та навчитися розробляти програмне забезпечення для реалізації перерахованих алгоритмів на комп’ютері. Завдання: Вивчити основні способи представлення довгих чисел та алгоритми для реалізації операцій введення, виведення, порівняння, а також арифметичних операцій додавання-віднімання довгих чисел. Скласти блок-схеми алгоритмів та підпрограми для реалізації операцій введення та виведення довгих чисел. Скласти блок-схеми алгоритмів, підпрограми та програми для реалізації адитивних операцій та операцій порівняння для роботи з довгими числами. Ввести в комп’ютер програми згідно з отриманим завданням. Відлагодити програми. При необхідності скоригувати блок-схеми алгоритмів та програми у відповідності з виявленими логічними та синтаксичними помилками. Остаточні версії блок-схем, програм та отримані результати занести у звіт з лабораторної роботи. Список ідентифікаторів констант, змінних і функцій, використаних у головній програмі і підпрограмах та їх пояснення maxDic – константа що вказує на максимальну довжину масиву; a[] – масив, що застосовується проміжним при введенні довгого числа; b[]– масив, що представляє довге число; c[]– масив, що представляє довге число; i, j, q, t, w – цілі змінні, що використовуються в циклі; RezVid[] – масив, в який записується результат віднімання. Блок-схема програми: Головний метод Main: Метод Vvid_A: ні так Метод Vuvid_A: Метод Vvid_B: ні так Метод Vuvid_B: Метод poriv: Метод vidnimannja: Текст Програми: using System; namespace Lab_1_Crupt { class Program { int[] B = new int[10]; int[] C = new int[10]; int[] RezVid = new int[10]; int LicA = 0; int LicB = 0; bool Ah, ElemRiv; static void Main() { Program ob = new Program(); ob.Vvid_A(); ob.Vvid_B(); Console.WriteLine(); ob.Vuvid_A(); Console.WriteLine(); ob.Vuvid_B(); Console.WriteLine(); ob.poriv(); Console.WriteLine(); ob.vidnimannja(); Console.ReadLine(); } public void Vvid_A() { int maxDic = 40; int[] A = new int[maxDic]; Console.WriteLine("Ввeдiть перше число"); for (int i = 0; i < maxDic; i++) { A[i] = int.Parse(Console.ReadLine()); if (A[i] == -1) { while (i < maxDic) { A[i] = -1; i++; } } } for (int t = 0; t < 10; t++) { B[t] = -1; } int j = 9; int q = 0; while (j != -1 && q < maxDic) { if (A[q] == -1) { j = -1; continue; } if (A[q + 1] == -1) { B[j] = A[q]; j = -1; LicA++; continue; } if (A[q + 2] == -1) { B[j] = A[q] * 10 + A[q + 1]; j = -1; LicA++; continue; } if (A[q + 3] == -1) { B[j] = A[q] * 100 + A[q + 1] * 10 + A[q + 2]; j = -1; LicA++; continue; } B[j] = A[q] * 1000 + A[q + 1] * 100 + A[q + 2] * 10 + A[q + 3]; j--; LicA++; q += 4; } } public void Vuvid_A() { Console.Write("перше число:"); for (int i = 9; i >= 0; i--) { if (B[i] > 0) { Console.Write("" + B[i]); } } Console.ReadKey(); } public void Vvid_B() { int maxDic = 40; int[] A = new int[maxDic]; Console.WriteLine("Введiть друге число"); for (int i = 0; i < maxDic; i++) { A[i] = int.Parse(Console.ReadLine()); if (A[i] == -1) { while (i < maxDic) { A[i] = -1; i++; } } } int j = 9; int q = 0; for (int t = 0; t < 10; t++) { C[t] = -1; } while (j != -1 && q < maxDic) { if (A[q] == -1) { j = -1; continue; } if (A[q + 1] == -1) { C[j] = A[q]; j = -1; LicB++; continue; } if (A[q + 2] == -1) { C[j] = A[q] * 10 + A[q + 1]; j = -1; LicB++; continue; } if (A[q + 3] == -1) { C[j] = A[q] * 100 + A[q + 1] * 10 + A[q + 2]; j = -1; LicB++; continue; } C[j] = A[q] * 1000 + A[q + 1] * 100 + A[q + 2] * 10 + A[q + 3]; j--; q += 4; LicB++; } } public void Vuvid_B() { Console.Write("друге число:"); for (int i = 9; i >= 0; i--) { if (C[i] > 0) { Console.Write("" + C[i]); } } Console.ReadKey(); } public void poriv() { if (LicA == LicB) { ElemRiv = true; for (int w = 9; w >= 0; w--) { if (B[w] > C[w]) { Console.WriteLine("Друге число менше"); Ah = true; return; } else if (B[w] < C[w]) { Console.WriteLine("Перше число менше"); Ah = false; return; } else if (B[w] == C[w]) { continue; } } } else { ElemRiv = false; if (LicA > LicB) { Console.WriteLine("Друге число менше"); Ah = true; } else { Console.WriteLine("Перше число менше"); Ah = false; } } } public void vidnimannja() { if (Ah & ElemRiv) { for (int i = 0; i < 10; i++) { RezVid[i] = -1; } for (int i = 0; i < 10; i++) { if (B[i] == -1 || C[i] == -1) { continue; } if (C[i] > B[i]) { if (B[i] < 10000 && B[i] > 1000) { int dop = B[i] + 10000; B[i + 1]--; RezVid[i] = dop - C[i]; } if (B[i] < 1000 && B[i] > 100) { B[i] += 1000; B[i + 1]--; RezVid[i] = B[i] - C[i]; } if (B[i] < 100 && B[i] > 10) { B[i] += 100; B[i + 1]--; RezVid[i] = B[i] - C[i]; } if (B[i] < 10 && B[i] > 0) { B[i] += 10; B[i + 1]--; RezVid[i] = B[i] - C[i]; } } else { RezVid[i] = B[i] - C[i]; } } } if (Ah == false & ElemRiv == true) { for (int i = 0; i < 10; i++) { RezVid[i] = -1; } for (int i = 0; i < 10; i++) { if (B[i] == -1 || C[i] == -1) { continue; } if (B[i] > C[i]) { if (C[i] < 10000 && C[i] > 1000) { int dop = C[i] + 10000; C[i + 1]--; RezVid[i] = dop - B[i]; } if (C[i] < 1000 && C[i] > 100) { C[i] += 1000; C[i + 1]--; RezVid[i] = C[i] - B[i]; } if (C[i] < 100 && C[i] > 10) { C[i] += 100; C[i + 1]--; RezVid[i] = C[i] - B[i]; } if (C[i] < 10 && C[i] > 0) { C[i] += 10; C[i + 1]--; RezVid[i] = C[i] - B[i]; } } else { RezVid[i] = C[i] - B[i]; } } } if (Ah == false) { Console.WriteLine("Результат вiднiмання:"); Console.Write("-"); } else { Console.WriteLine("Результат вiднiмання:"); } if (RezVid[9] > 0) { Console.Write("" + RezVid[9]); } for (int i = 8; i > 1; i--) { if (RezVid[i] == 0) { if (RezVid[i - 1] == -1) { Console.WriteLine("" + RezVid[i]); return; } Console.Write("0000"); continue; } if (RezVid[i] >= 0 && RezVid[i] < 10) { if (RezVid[i - 1] == -1) { Console.WriteLine("" + RezVid[i]); return; } Console.Write("000" + RezVid[i]); continue; } if (RezVid[i] >= 10 && RezVid[i] < 100) { if (RezVid[i - 1] == -1) { Console.WriteLine("" + RezVid[i]); return; } Console.Write("00" + RezVid[i]); continue; } if (RezVid[i] >= 100 && RezVid[i] < 1000) { if (RezVid[i - 1] == -1) { Console.WriteLine("" + RezVid[i]); return; } Console.Write("0" + RezVid[i]); continue; } if (RezVid[i] >= 1000 && RezVid[i] < 10000) { if (RezVid[i - 1] == -1) { Console.WriteLine("" + RezVid[i]); return; } Console.Write("" + RezVid[i]); continue; } } } } } Результат роботи програми: / Висновок: На цій лабораторній роботі я вивчив способи представлення довгих чисел, та алгоритми для виконання операцій введення-виведення, порівняння, віднімання довгих чисел, та навчився розробляти програмне забезпечення для реалізації перерахованих алгоритмів на комп’ютері.
Антиботан аватар за замовчуванням

22.05.2013 21:05-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!