Code tìm số bí mật bị sai

  1. Máy tính sẽ chọn ngẫu nhiên một số từ 1 đến 100.
  2. Máy tính sẽ yêu cầu bạn đoán số đó là bao nhiêu.
  3. Máy tính sẽ so sánh số bạn chọn và số « bí mật » đó. Máy tính sẽ gợi ý cho bạn biết số bí
    mật này lớn hay nhỏ hơn số mà bạn đã chọn. Nếu đoán đúng thì chương trình dừng lại.
  4. Nếu bạn đoán sai ở bước 3, thì máy tính lại kêu bạn đoán tiếp.
    5.Và máy tính lại gợi ý số bí mật lớn hơn hay nhỏ hơn.
  5. Và nó vẫn tiếp tục cho đến khi bạn tìm thấy số bí mật đó.
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main()
    {
        int Sobimat=0, Sodoan=0;
        const int max=100, min=1;
        srand(time(NULL));
        Sobimat=(rand()%(max-min+1))+min;
        while(Sodoan==Sobimat)
        {
            scanf("%d",&Sodoan);
            if(Sodoan>Sobimat)
            {
                printf("Lon hon");
            }
            else if(0, Sodoan<Sobimat)
            {
                printf("Nho hon!");
            }
            else
            {
                printf("Chuc mung! Ban da doan dung");
            }
        }

        return 0;
    }

đó là bài code của mình mà vẫn bị sai, giúp mình với, thanks

Sai như thế nào nhỉ, bạn chụp mà hình lên xem. Mà sao có số 0 ngay chỗ else if .

mình xóa số 0 rồi, chỉ là viết dư thôi, nhưng vòng lặp không chạy được, khi hiện lên mình chỉ được đoán số 1 lần, rồi bị off chương trình.

Điều kiện theo mình nghĩ thì phải là vòng while chạy khi số đoán khác số bí mật, còn lúc đoán đúng rồi thi ko chạy nữa :stuck_out_tongue:

có ai biết không chỉ với? TT

mình cũng không nhớ rõ nữa hình như là bạn thiếu một dòng để khi chạy hết chương trình sẽ đợi bạn ấn enter mới tắt :v

nhưng mình mới đoán 1 số khi enter thì chỉ hiện bé hơn or lớn hơn rồi tắt chứ không cho mình đoán số tiếp theo, như là vong lặp không chạy ý, mình nghĩ mình sai ở while(Sodoan==Sobimat). Ai giúp mình sửa dòng đó với

while(Sodoan != Sobimat)

có nghĩa là khi sodoan chưa bằng số bí mật thì lặp tiếp.

Bạn dùng hàm do while(sobimat != sodoan) là đc

tại đk 2 xóa số 0 đi, dùng vòng lặp do while là đc

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc,char** argv)
{
int soBiMat = 0, soHienTai =0,solandoan;
const int MAX= 10, MIN=1;
srand(time(NULL));
soBiMat = (rand() % (MAX - MIN + 1) + MIN);
solandoan=1;
do
{

printf(“So can tim la bao nhieu ? “);
scanf(”%d”,&soHienTai);
if (soBiMat != soHienTai)
{
solandoan++;
if(soBiMat>soHienTai)
printf(“Lon hon !\n”);
else if (soBiMat<soHienTai)
printf(“Nho hon !\n”);
}
else
printf(“Chuc mung ! Ban da tim duoc so bi mat sau %d lan doan \n”,solandoan);
} while (soHienTai!=soBiMat);
}

good thế, vậy mình muốn làm với vòng lặp while thì code như nào vậy?

hello, mình code lại như này đúng nè.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int Sobimat=0, Sodoan=0;
const int max=100, min=1;
srand(time(NULL));
Sobimat=(rand()%(max-min+1)+min);
printf(“Tim so can tim\n”);
while(Sodoan!=Sobimat)
{
scanf("%d",&Sodoan);
if(Sobimat>Sodoan)
{
printf(“Lon hon\n”);
}
else if(Sobimat<Sodoan)
{
printf(“Nho hon!\n”);
}
else
{
printf(“Chuc mung! Ban da doan dung\n”);
}
}

    return 0;
}

Yeah, mình đã nhắc nhở bạn điều kiện vòng lặp ở trên nhưng bạn ko để ý lắm. Bạn nên để ý hơn những lời giải của các bạn phía trên đã đưa ra để tìm được lời giải nhanh hơn cho vấn đề bạn mắc phải :p.

1 Like

uhm! để ý mới thấy Hoàng Trung cũng vào góp ý cho mình 2 bài toán rồi nhỉ, cảm ơn bạn nhé, mĩnh sẽ cố gắp tiếp thu ý kiến của mọi người nhiều hơn

1 Like

ok, cố lên nhé :wink:

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