Hỏi về thuật toán "bỏ gì vào cũng chạy"
Mình học c#,hôm nay thực hành với mảng phân số,có vài yêu cầu na ná nhau như:
-Tính diện tích hình thang
-Tính diện tích hình chữ nhật
-Tính diện tích hình vuông
-Tính diện tích hình tam giác
Như mình code thì cần cần 3 hàm cho 3 ý này nhưng thầy code không biết kiểu gì 1 hàm ngắn ngủn và đưa vào các thông số thế là hàm tự nhận diện các thông số đó thuộc hình gì và diện tích hình đó bao nhiêu,hỏi thầy thầy kêu về tìm hiểu mà nói thật chưa biết tí gì về nó mà tìm hiểu nên lên đây nhờ ACE cho mình cái keyword ( nếu tài liệu thì càng tốt ) và nếu được em xin 1 code mẫu ngắn gọn cùng giải thích nó thì tuyệt vời luôn.
Em xin chân thành cảm ơn
Mình chưa hiểu ý bạn nói lắm.?? Bạn có thể đưa đầy đủ yêu cầu bài toán không?
Bạn cho mình hỏi là để tính diện tích hình thang thì mình nhập các thông số nào (2 cạnh đáy, 2 cạnh bên hay là 2 cạnh đáy, chiều cao)
Và tam giác, vuông, hcn nữa, cần những thông số gì?
Mình dùng cách “nạp chồng phương thức” tức là tham số khác nhau, tên hàm giống nhau.
Yêu cầu cũng như bình thường thôi,tính diện tích các hình đó với thông số nhập vào từ bàn phím,nếu là mình thì mỗi hình mình phải làm 1 hàm tính riêng biệt nhưng thầy code chỉ 1 hàm thôi,khi nhập thông số vào rồi gọi hàm đó thì hàm đó tự biết đó là hình gì và tính diện tích ( còn những hình gì mình k nhớ lắm,trên bài kia là ví dụ thui vì thầy " khè hàng "lúc gần về nên chả kịp coi rõ)
cũng là các thông số như bạn code thôi nhưng đây chỉ cần 1 hàm là xong á
Chắc là Keyword params
https://msdn.microsoft.com/en-us/library/w5zay9db.aspx
Một phương thức nếu không nạp chồng thì số lượng biến đầu vào phải cố định. Không thể chỉ 1 mà lại có nhiều số lượng phần tử khác nhau. (Trừ khi tham số đầu vào là biến mảng thì có thể đọc số lượng phần tử để biết xem đó là hình gì)
Mình đưa câu hỏi mơ hồ quá,chân thành xin lỗi bạn nhưng đó là tất cả thông tin mình có,để mình hỏi thầy thử xem thầy có cho thêm gợi ý nào không rồi sẽ up lên đây hỏi mọi người
Một lần nữa chân thành xin lỗi bạn cùng mọi người
Ô, cách của @drgnz drgnz có thể dùng được đấy XD
Bạn bản chất nó vẫn là biến mảng, nhưng mà việc nhập hàm bằng tay sẽ tiện hơn một chút là với biến mảng thuần tuý.
Vậy để tối mình về triển khai thử,cảm ơn bạn rất nhiều.
Không nhờ làm LAB nữa,cố gắng vậy,không phải đây là lần cuối,tập thức đêm hoy
Hình tam giác và hình tứ giác là đã có số tham số khác nhau rồi. Nên mình nghĩ thầy bạn dùng nạp chồng phương thức rồi chỉ cho bạn xem hàm main. =)))
Cảm ơn bạn mình sẽ tìm hiểu về vấn đề này
Có bạn trai thì nhờ nó giải cho
@kaitoubg Không nhất thiết phải nạp chồng…
Cách đó thì giống như bạn @drgnz đã nói ở trên. Tức là dùng mảng và xem số cạnh là bao nhiêu. Nhưng mình nghĩ học OOP thì không nên làm theo kiểu thế.
Chắc thầy chỉ yêu cầu kết quả thôi :)) Với cả nếu đúng là chỉ nhập các tham số cùng một loại và trả về cùng một kiểu thì dùng params ngắn gọn hơn dùng nạp chồng.
Không biết đúng không. Để đây và không nói gì thêm (câu này mới học trên phây búc )
có thể sử dụng tính đa hình của oop để giải cũng được tạo ra 1 abstract class hình học rồi cho các class kia extends và override lại method tính diện tích khi dùng thì khởi tạo đối tượng tương ứng rồi truyền tham số vào…
Giả sử là dữ liệu nhập vào không cần validate. Yo!..
Tính hình thang:
magicMethod(10, 15, 20)
Tính hình chữ nhật
magicMethod(10, 10, 20)
Tính hình vuông
magicMethod(10, 10, 10)
Tính tam giác:
magicMethod(10, 0, 20)
key word
default value parameters
optional parameters
Cái này viết thẳng chưa có test
code python
Cái này đã tést và chạy
Diện tích hình thang :
dientich(10,15,18)
Diện tích hình vuông :
dientich(10)
Diện tích hình chữ nhật :
dientich(10,15)
Diện tích hình tam giác :
dientich(10,15,0)
Cảm ơn tất cả mọi người , mình sẽ nghiên cứu rồi tiếp tục đăng cậu hỏi tại topic này
Một lần nữa cảm ơn mọi người rất nhiều.