Bài toán chó gà

nhân tiện cho mình hỏi vòng for chính xác cách nó vận hàng như nào thế??mình vẫn ko hiểu lắm @@

vậy hiện tại bạn đang hiểu nó vận hành thế nào ?

1 Like

hình như nó lặp lại điều kiện đến khi ko đúng thì thôi,với cả vòng for lồng thì ko hiểu nó chạy như nào @@,có ctrinh đơn giản này mà e còn ko hiểu sao nó chạy từ 65 mà ko phải 0 @@
#include
#include
using namespace std;
int main()
{

for(int b=0;b<=360;b++)
{
    cout<<b<<" "<<endl;}

}

Nghiêm túc tí đi bạn. Trao đổi để học chứ có phải đùa ở đâu, con số 65 bạn nêu ra là ở đâu đó?

Bài toán gà chó, ban đầu có thể bạn chưa viết được cho hay để nó tối ưu, nhưng cách thô thiển nhất bạn sẽ phải có cách giải dễ hình dung như sau:

  • Tối đa có 36 con, như vậy ta sẽ lặp từ 1 đến 36.
  • Khả năng sẽ có ít nhất 1 con gà hoặc 1 con chó, không có trường hợp nào 0 con gà, 0 con chó, vì nếu bài toán mà có vậy thì người ta đã biết đáp án từ lâu, loại bỏ luôn phương án có chó/ gà bằng 0 ra khỏi để xử lý cho gọn nhẹ. Vậy, vòng lặp ta bớt đi 1 lần lặp, còn 35.
  • Sẽ có hai vòng lặp lồng nhau, căn cứ trên số chân gà và số chân chó, nếu khớp 100, tổng ga + cho = 36 thì ta in kết quả ra, còn không thì “chạy xe không” qua đó (sau này tối ưu code thì đúng đáp án là break). Cụ thể đoạn code:

Đoạn code trên mình viết mà chưa được test, hồi giờ không biết gì về ngôn ngữ lập trình C/C++, hoàn toàn tra tài liệu và viết dựa trên hiểu biết về PHP. Hy vọng đoạn code trên ai đó cho chạy thử và chạy được, nếu hem chạy được báo giúp, xin đừng chém mình.

Mở rộng bài toán ra nhập tổng số gà và chó, chủ topic tự làm dựa trên bài toán trên, khai báo thêm biến tong_chan và biến tong_ga_cho cho phép người dùng nhập liệu bằng cint, để rồi “cài cắm” (thay thế) vào chỗ 35 và 100 trong đoạn code trên là xong.

4 Likes

bài này áp công thức vô là ra mà đâu cần tìm gì đâu?
2x+4y = T
x+y = N
=>
x = (4*N -T)/2
y=N-x

3 Likes

e hoàn toàn nghiêm túc,thử chạy nó chỉ chạy từ 65
int main()
{
for(int b=0;b<=360;b++)
{
cout<<b<<" "<<endl;}

}

Redirect nó ra file xem.

2 Likes

Bạn chạy trên cmd à? Nếu đúng là như vậy thì nó chỉ hiện ra vài dòng gần nhất thôi.

Nói luôn, bạn biết hệ giải phương trình bậc 2 không? Bài này chỉ là giải hệ phương trình thôi.

2 Likes

ko,m chạy trên codeblock

Console của codeblocks cũng giới hạn số dòng mà.

22 gà + 14 chó easy :smiley:

1 Like

Em mới code thử, mọi người xem sao :joy:

#include <iostream>
using namespace std;

int main() {
    int dog, chicken;
    int sum, sumFeet;
    
    cout << "Please input the number of dog and chicken" << endl;
    cin >> sum;
    cout << "\nPlease input the sum of feet" << endl; 
    cin >> sumFeet;
    dog = (sumFeet-2*sum)/2;
    chicken = sum-dog;
    if (dog > 0 && chicken > 0) {
        cout << "The number of dog is " << dog << endl;
        cout << "The number of chicken is " << chicken << endl;
    }
    else {
        cout << "invalid" << endl;
    }
}
2 Likes

Cẩn thận trường hợp số chân là lẻ.

1 Like

coi trên kia kìa

ngồi rảnh rang không biết code gì mới hợp trình, thấy nên bỏ tí thời gian làm thử, vui quá, ít nhất còn thấy được mình còn có khả năng làm một tí :joy:

PS: áp dụng cho chó và gà thôi mà, còn nếu là con khác thì phải thêm biến là số chân nữa :))

2 Likes

Ý anh nói là cái sumFeet kia kìa, thằng nào nghịch ngu nhập số lẻ vào thì sao :joy:

1 Like

thì chắc được nửa con :joy: cái đó ghi thêm một cái if-else, nếu %2=1 thì break là xong :)) mà thôi, làm biếng, để anh thớt tự tùy chỉnh :V

2 Likes

hix,nếu dùng for thì như nào thế bạn???

Việc chặn khoảng 2 nghiệm rồi dùng vòng for x, y (2 nghiệm) trong 2 khoảng đó để mò được nghiệm rất dễ làm, đúng không?

1 Like

e làm dc rồi bác nhưng thắc mắc là in ra cái invailid như thến nào hix
code em
{
int socon,sochan;
cin>>socon>>sochan;
for(int ga=1; ga<socon&&2ga<sochan; ga++)
{
for(int cho=1; cho<socon&4
cho<sochan; cho++)
{
if(2ga+cho4==sochan&&ga+cho==socon)
{

            cout<<"chicken ="<<ga<<" "<<"dog ="<<cho;
        }
    }
}

}

Một cách giải thường quy cho bài toán này: Thuật toán vét cạn :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?