Nhập vào số tự nhiên, nếu nhập sai thì nhập lại

Anh chị cho em hỏi với ạ!
Đề bài yêu cầu nhập vào số tự nhiên, làm thế nào để khi mình nhập SỐ THỰC(thập phân) thì chương trình nó bắt nhập lại ạ ?

Bạn dùng vòng lặp để thực hiện việc lặp lại nếu nhập sai
Check var type của dữ liệu vừa nhập, nếu là int thì ok nếu khác int/float/decimal gì đó thì bắt nhập lại

Update nãy mình đọc không kỹ chỗ “số thực” nên có comment là int, nhưgn về nguyên tắc làm thì cũng same same nhau

4 Likes

Có thể giải thích cái check var type bằng cách nào được không ạ :3

Bạn cho nhập dạng chuỗi, sau đó kiểm tra xem chuỗi đó có phải dạng số nguyên hay ko, nếu có dạng số nguyên thì chuyển thành kiểu số nguyên.

3 Likes

Nhập string rồi dùng sscanf thôi :smiley:

3 Likes

Một số thực bằng với phần nguyên của nó thì nó là số nguyên. :slight_smile:

    float a = 0;
    while (1) {
        scanf("%f", &a);
        if (a != (int)a) printf("\nRetype: ");
        else break;
    }
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?