TÍNH TOÁN SỐ NGUYÊN LỚN DỰA TRÊN STACK

I. THÔNG TIN CƠ BẢN

Tên Project: BigNumber
Tác giả: Nguyễn Viết Công Hậu (Jason)
Email: nvconghau1995@gmail.com
Mô tả:  Sử dụng Stack/Queue để thực hiện các phép tính cộng, trừ, nhân, chia trên các số nguyên cực lớn.
Ngôn ngữ lập trình: Java (JDK 1.8)
Môi trường phát triển: Netbeans IDE 8.0.1
Ngôn ngữ phát triển: Tiếng Anh
Ngôn ngữ giao diện người dùng: Tiếng Anh
Bản quyền Project BigNumber  và các thành phần con (bao gồm package, lớp) thuộc tác giả và được phân phối dưới Giấy phép GNU General Public License. Vui lòng đọc kĩ giấy phép này trước khi tải về, sử dụng, chỉnh sửa, phân phối dưới bất kỳ hình thức nào.
II. Thông tin giấy phép:

/*
* PROJECT: BigNumber
* Version: 1.2
* AUTHOR: Hau Nguyen Viet (Jason)
* Email: nvconghau1995@gmail.com
* (c) 2015 Hau Nguyen Viet.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see < http://www.gnu.org/licenses/ >.
*/

III. MÔ TẢ CÁC LỚP

BigNumber
BigNumber đang tính toán cộng, trừ, nhân chia giữa số hai số, một số rất rất lớn, và một số tương đói lơn (nhỏ hơn số đầu tiên rất nhiều). Sau khi input xong hai số, chương trình mất “không đầy” một giây để tính toán, hiển thị kết quả của cả 4 phép tính.

1. Lớp InputLib.Input : Thư viện nhập dữ liệu từ bàn phím cho chương trình loại console nho nhỏ, tác giả:
2. Trong package StackAndQueue (tất cả các lớp của package này đềi viết bởi ):

  • BigNumber: Lớp chính của dự án, mục đích định nghĩa ra kiểu dữ liệu BigNumber.
  • GenericNode  : Dùng để mô tả các node để mô phỏng cấu trúc liên kết được dùng để hiện thực stack/queue.
  • SimpleStack: stack đơn giản
  • GenericStack: kế thừa từ SimpleStack, tuy nhiên kiểu dữ liệu của data phải là kiểu hiện thực của interface Comparable.
  • Các lớp SimpleQueue, GenericQueue tương tự.

3. Lớp TestProgram.Main: chương trình chạy thử các phép toán trên BigNumber.

IV. LỜI CẢM ƠN

Dành lời cảm ơn của tác giả gửi đến giảng viên bộ môn “Data Structures & Algorithms” tại Đại học FPT, thầy Ngô Đăng Hà An.

V. TẢI VỀ MÃ NGUỒN DỰ ÁN

Tải về tại link: https://github.com/jasonnguyenvn/BigNumber

PHỤ LỤC , một bài test, vẫn chỉ mất chưa đầy 1 giây để tính toán và in kết quả (không kể thời gian nhập dữ liệu từ bàn phím)

Screenshot (30)

Screenshot (31)

Bài test dưới đây có thể xấp xỉ một giây hoặc hơn một giây không nhiều cho cả 4 phép tính cộng trừ nhân chia và in các kết quả ra màn hình.

Screenshot (32)

Lần test dưới đây thì dùng hai số cực lớn, mất tổng cộng 7 giây cho cộng trừ nhân chia và in kết quả. Tuy nhiên, cộng trừ và in kết quả hai phép này tốn khoản chưa đầy nửa giây, phép chia thì cũng sấp xỉ 1 giây, chỉ có phép nhân là chiếm thời gian khá lớn.

Screenshot (33)