em có viết được chương trình nhưng khác yêu cầu một chút , em chỉ xuất được số chính giữa lớn nhất thôi ạ , ai giúp e chỉnh lại theo yêu cầu đề bài với ạ , khác output 1 chút .
Nếu số chữ số là 11 thì tính sao, ngoài ra cuxng không có điều kiện giới hạn số nhận vào, nên có thể là 1 số rất lớn, thuật toán vừa theo kiểu trâu bò mà lại vừa có nhiều lỗ hổng, lặp code cũng rất nhiều
Thật ra input con số của bài này là dạng chuỗi
Hàm tinh() dùng để tìm số chính giữa, nó chia ra 2 trường hợp: độ dài con số là số lẻ hoặc là số chẵn.
— Nếu là số lẻ thì lấy kí tự ở vị trí độ dài chia 2 và chuyển nó thành số [quote=“Duy_Anh_Vu, post:7, topic:37787”]
s[len/2]-48
[/quote]
rồi trả về kết quả đó
— Số chẵn thì tương tự như số lẻ thôi
Còn [quote=“Duy_Anh_Vu, post:7, topic:37787”]
if (tinh()>=gt)
[/quote]
Giả sử mình cho 3 số: 123, 4567, 22145
Đầu tiên s là 123 thì tinh() mang giá trị 2, còn gt = -1 thì thỏa điều kiện if nên gt sẽ được cập nhật giá trị của tinh() -> gt = 2, đồng thời chuỗi x sẽ mang giá trị của s.
-> x = 123
Lần thứ 2, s là 4567 -> tinh() = 56 -> tinh() >= gt = 2 : đúng -> gt = 56 -> x = 4567
Lần cuối cùng, s = 22145 -> tinh() = 1 -> tinh() >= gt = 2 : sai -> không làm gì hết
Đó là cách walkthrough cho 1 thuật toán. Lần sau nếu bạn cảm thấy không hiểu cách hoạt động của thuật toán thì lấy giấy rồi tự đưa input, rồi dưa theo giải thuật đó mà làm như mình thì sẽ hiểu thôi
em có viết được chương trình nhưng khác yêu cầu một chút , em chỉ xuất được số chính giữa lớn nhất thôi ạ , ai giúp e chỉnh lại theo yêu cầu đề bài với ạ , khác output 1 chút .![](/pictures/picfullsizes/2018/10/01/ghe1538407384.png)
Nếu số chữ số là 11 thì tính sao, ngoài ra cuxng không có điều kiện giới hạn số nhận vào, nên có thể là 1 số rất lớn, thuật toán vừa theo kiểu trâu bò mà lại vừa có nhiều lỗ hổng, lặp code cũng rất nhiều
Mình nghĩ chuyển số sang string
string có độ dài lẻ có số ở giữa nhỏ hơn string có độ dài chẵn.
e mới học ạ , a giúp e với :((
Chuẩn, thêm phần valid và padding nữa là được, đâu cần phải chuyển hết sang số đâu
Ai giải thích cho em dòng code này với ạ
Hồi nãy nhìn lộn, hàm tinh() đúng rồi đấy
em cũng k hiểu ạ , đây là code e nhặt nhưng nó đúng với 100% đề bài mà e vẫn k hiểu ai có thể giải thích cho em dược không , em cảm ơn
Bạn không hiểu chỗ nào ?
hàm tinh() và khúc if(tinh()>=gt) ạ
Thật ra input con số của bài này là dạng chuỗi
Hàm tinh() dùng để tìm số chính giữa, nó chia ra 2 trường hợp: độ dài con số là số lẻ hoặc là số chẵn.
— Nếu là số lẻ thì lấy kí tự ở vị trí độ dài chia 2 và chuyển nó thành số [quote=“Duy_Anh_Vu, post:7, topic:37787”]
s[len/2]-48
[/quote]
rồi trả về kết quả đó
— Số chẵn thì tương tự như số lẻ thôi
Còn [quote=“Duy_Anh_Vu, post:7, topic:37787”]
if (tinh()>=gt)
[/quote]
Giả sử mình cho 3 số: 123, 4567, 22145
Đầu tiên s là 123 thì tinh() mang giá trị 2, còn gt = -1 thì thỏa điều kiện if nên gt sẽ được cập nhật giá trị của tinh() -> gt = 2, đồng thời chuỗi x sẽ mang giá trị của s.
-> x = 123
Lần thứ 2, s là 4567 -> tinh() = 56 -> tinh() >= gt = 2 : đúng -> gt = 56 -> x = 4567
Lần cuối cùng, s = 22145 -> tinh() = 1 -> tinh() >= gt = 2 : sai -> không làm gì hết
Sau đó in ra x = 4567
Thanks bro very much
Đó là cách walkthrough cho 1 thuật toán. Lần sau nếu bạn cảm thấy không hiểu cách hoạt động của thuật toán thì lấy giấy rồi tự đưa input, rồi dưa theo giải thuật đó mà làm như mình thì sẽ hiểu thôi
Bác ở UIT phải ko