Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* flowchart (cả 2 ảnh): https://tinyurl.com/wgk6j7q
- điều kiện thoát vòng lặp: có tìm thấy code trong mảng findcode() == true
- ~> điều kiện vòng lặp: không tìm thấy code trong mảng findcode != true hay findcode() == false
- Tuy nhiên: khi bắt đầu vòng lặp thì điều kiện phải đúng, vì đây là while()
- nếu muốn ko đặt điều kiện trước khi chạy ~> dùng do-while()
- bởi vì findcode() là 1 function nên mình cho check = findcode() để dễ cho vào while()
- */
- check = false;
- while (check == false) {
- inputcode();
- checkcode();
- check = findcode(); // nếu findcode() trả về true thì vòng lặp while này thoát
- }
- printtf("Toi thay code roi!\n");
- deletebook();
- /* dùng do-while()
- do-while() thực thi khối lệnh xong rồi mới check điều kiện
- nghĩa là làm hết đống ở trong kia, làm xong thì ta đã có
- check nên không cần khởi tạo check = false;
- */
- check = false;
- do {
- inputcode();
- checkcode();
- check = findcode(); // nếu findcode() trả về true thì vòng lặp while này thoát
- } while (check == false);
- printtf("Toi thay code roi!\n");
- deletebook();
- /*
- ở bài trên ta nhận ra mình cần có thêm nhiều hàm:
- inputandcheck(), findcode() và delelebook()
- */
- //từ flowchart ta viết được hàm inputandcheck() cho code như sau:
- /*
- điều kiện thoát vòng lặp:
- 10>độ dài>0 VÀ code không bị trùng
- ~ (strlen(code) > 0) && (strlen(code) < 10) && (dupcheck(code) == false)
- ~> điều kiện vòng lặp:
- độ dài<=0 HOẶC độ dài >=10 HOẶC code trùng
- ~ (strlen(code) <= 0) || (strlen(code) <= 10) || (dupcheck(code) == true)
- Tuy nhiên: khi bắt đầu vòng lặp thì điều kiện phải đúng, vì đây là while()
- nếu muốn ko đặt điều kiện trước khi chạy ~> dùng do-while()
- */
- while ((strlen(code) <= 0) || (strlen(code) <= 10) || (dupcheck(code) == true)) {
- printf("Enter code you want to find: ");
- gets(code);
- if ((strlen(code) <= 0) || (strlen(code) <= 10)) {
- printf("Invalid code!\n");
- continue; // quay về ban đầu: nhập lại
- }
- else { //nếu không thoả mãn if là đi theo nhánh Đúng của 0<độ dài<10
- if (dupcheck(code) == true) {
- printf("Duplicate code!\n");
- continue;
- }
- }
- }
- /*
- đến đây phải nghĩ lại, vì lúc ban đầu chưa nhập code thì làm sao mà kiểm tra
- được (strlen(code) <= 0) || (strlen(code) <= 10) || (dupcheck(code) == true)
- để bắt đầu vòng lặp? không ổn, ta phải chạy rồi mới tính được chứ?
- ~> dùng do-while()
- */
- do {
- printf("Enter code you want to find: ");
- gets(code);
- if ((strlen(code) <= 0) || (strlen(code) <= 10)) {
- printf("Invalid code!\n");
- continue; // quay về ban đầu: nhập lại
- }
- else { //nếu không thoả mãn if là đi theo nhánh Đúng của 0<độ dài<10
- if (dupcheck(code) == true) {
- printf("Duplicate code!\n");
- continue;
- }
- }
- } while ((strlen(code) <= 0) || (strlen(code) <= 10) || (dupcheck(code) == true));
- /* xong đến đây mình lại phải viết hàm dupcheck() nữa để kiểm tra nữa
- ~> cần viết dupcheck(), findcode() và delelebook() */
Add Comment
Please, Sign In to add comment