Đề bài :
Vừa gà vừa chó
Bó lại cho tròn
Ba mươi sáu con (36 con)
Một trăm chân chẵn (100 chân)
Hỏi có bao nhiêu gà, chó?
Hướng dẫn : Ở đây ta lợi dụng sức mạnh của máy tính để thử tất cả các trường hợp bằng 2 vòng lặp For, ta sẽ thử lần lượt từng trường hợp 1:
1 con gà 1 con chó
1 con gà 2 con chó
1 con gà 3 con chó
1 con gà 4 con chó
1 con gà 5 con chó
…..
1 con gà 35 con chó
2 con gà 1 con chó
2 con gà 2 con chó
2 con gà 3 con chó
2 con gà 4 con chó
2 con gà 5 con chó
…. trường hợp nào thỏa điều kiện Gà + chó =36 (cái đầu) và 2*chân gà + 4*Chân chó =100 (cái chân) thì hiện ra kết quả số gà và chó
To GaCho
CS
CT
Rt 90
PU
For [ga 1 36 1] [
For [cho 1 35 1][
IF And (:ga+:cho=36)(2*:ga+4*:cho=100) [
Label (List “Co :ga “con “ga “va “co :cho “con “cho) ]
]]
End
Cách khác ta giải bài toán bằng vòng lặp While (code của cô Lê Thị Xuân):
Với bài này ta xem số gà là A số chó là B, vậy A+B = 36 nếu ta cho số gà là 1 thì số chó là 36-1=35 khi đó số tổng số chân gà và chó chưa đủ 100 thì tiếp tục tăng số gà lên 1 con và số chó giảm xuống 1 con, cứ tiếp tục thực hiện như thế cho đến khi tổng số chân gà và chó đủ 100 chân thì dừng lại và báo kết quả số gà và số chó tương ứng
To gacho
Make “A 1
Make “B 35
Make “Chan :A*2 + :B*4
While [Not Equalp :Chan 100] [
Make “A :A + 1
Make “B :B – 1
Make “Chan :A*2 + :B*4] ;While
Rt 90 Label (List “Co :A “con “ga “va :B “con “cho)
END
Đáp án của 2 cách giải đều ra 22 con gà và 14 con chó.
Bài này tôi nghĩ cho biến cho chay từ 1 đến 36 for [cho 1 36 1] thì cách giải bài toán đơn giản hơn.
Thật sự thì 35, hay 36 không ảnh hưởng đến kết quả bài toán nhưng có vẻ đối với học sinh thì làm luôn tới 36 sẽ dễ hiểu hơn :). Cảm ơn bạn đã góp ý, chúc bạn luôn vui khỏe.
Trời ơi tôi đọc chưa kĩ, Cho tôi xin lỗi, bài toán cỗ gà và chó nên cho biến chó for [ cho 1 25 1] thì sẽ đúng với điều kiện bài toán.
Bài toán cổ Vừa ga vừa chó này theo mình nên hướng dẫn học sinh giải theo 2 cách: Cách 1 dùng lệnh For cách 2 dùng lệnh While để học sinh phân biệt được sự khác nhau giữa 2 lệnh For và While. Qua đây học sinh sẽ nhận biết được những dạng toán nào chỉ có thể giải bằng lệnh For mà ko giải được bằng vòng lặp While. Giải bằng vòng lặp While như sau: Với bài này ta xem số gà là a số chó là b, vậy a+b = 36 nếu ta cho số gà… Read more »
Cảm ơn ơn góp ý của bạn mình sẽ bổ xung thêm phần dùng vòng lặp while vào bài viết 🙂
to toanco make “a 36*4 make “b 100 make “c :a-:b make “d 4-2 make “e :c/:d make “f 36-:e rt 90 label[so con ga la:] pu fd 180 label :e bk 180 rt 90 fd 30 lt 90 label[so con cho la:]fd 180 label :f pd end Tôi biết cái này chả gọn hơn nhưng đỡ khó thuộc(học)ở cái[while] Trong câu lệnh của tôi tôi dùng p.pháp giả thiết tạm cho tất cả 36 con đều là chó thì thừa ra là 44 chân cứ thay 1 chó = 1 gà thì số chân thừa ra là 2 chân… Read more »
Cách này mình mới biết lần đầu tiên 😀