01/10/2018, 01:14
Nhập phân số vào console
Em vừa mới tiếp xúc với lập trình C++, em vừa viết chương trình giải phương trình bậc 2. Khi em nhập giá trị cho a là phân số ví dụ như 4/5 thì console bỏ qua các bước nhập giá trị vào b, c. Nhưng khi em nhập là 0.8 thì console vẫn xử lý bình thường ạ. Vậy cho em hỏi có cách nào để nhập phân số cho tiện trong việc tính toán không ạ?
Em cảm ơn trước ạ!
Bài liên quan
Bạn phải lập trình parser để nhận diện phân số, hoặc xài thư viện viết sẵn. Tốt nhất là bỏ qua, học C++ cho rành đã.
Kiểu phân số không có sẵn. Học đến class thế nào cũng có bài tập tạo cái này thôi.
Giờ bạn học mấy hàm nhập xuất với định dạng cho kĩ, khó hơn C nhiều.
Cái đó từ từ tính bạn
Struct cũng dùng được chứ anh nhỉ
class tạo nhưng vd nhập vào là vẫn phải nhạp là bao nhiêu b là bao nhiêu hay nhập một phát là 4/5 luôn hả anh
Ừ thực ra từ khóa “struct” với “class” là như nhau trong C++. Với lại compiler C++11 trở đi có 1 số tiêu chí nhận dạng cái nào là struct (hay POD) và cái nào là class.
@Do_Nhien tùy bạn muốn viết ntn thôi. Trong sách thấy ghi “nhập tử số… nhập mẫu số…” để nhấn mạnh vào trọng tâm (tạo class và các toán tử).
mình ko làm c++ bạn à mình đang học c# mình chỉ thắc mắc làm thế nào để nhập 4/5 vào màn hình console nhỉ
xài Boost rational nè:
thêm linker option
-lgmp
thôi. Vô tư xài phân số. Nhưng phải install Boost.Multiprecision và GMPdemo: http://rextester.com/NWLO14139
code tay cái kiểu nhập như vậy được ko bạn nhỉ
Kinh thật
được:
nhưng phân số mà xài int tử mẫu thì có vấn đề, ví dụ:
1/65535
+1/65537
sẽ ko tính được vì mẫu > 231. Bởi vậy phải xài big int trong thư viện GMP.Mình nghĩ là nên để a,b,c là std::string, sau đó viết trường hợp cho việc nhập số, nhập số thập phân và nhập phân số. Phức tạp về code nhưng dễ về phía người nhập
nhỡ cái biến sep mà họ nhập các ký tư khác thì sao bạn
thì check thêm 1 dòng
if (sep != '/') //xử lý nó
kiểm tra input xấu thì vô vàn cách, khổ lắm. Install MSYS2 + MinGW-w64 rồi xài Boost rational có khi còn lẹ hơn:
install MSYS2
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-gdb
pacman -S mingw-w64-x86_64-boost
vậy là chiến được rồi
try catch bạn thánh c++ thật