Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Đồ họa

  1. #1
    Ngày gia nhập
    08 2008
    Nơi ở
    TP Hồ Chí Minh
    Bài viết
    28

    Angry Đồ họa

    Code:
    void main()
    {
    	clrscr();
    	float r, PI = 3.14;
    	textmode(C80);
    	textbackground(GREEN);
    	window(1, 1, 80, 25);
    	clrscr();
    	//tao cua so mau tim
    	textbackground(MAGENTA);
    	window(20, 8, 60, 18);
    	clrscr();
    	textcolor(YELLOW);
    	cprintf("Ban kinh la: ");
    	textcolor(BLUE);
    	cscanf("%f",&r);
    	textcolor(WHITE);
    	gotoxy(1, 4);
    	cprintf("\nChu vi la: %6.2f",2*PI*r); //Chu vi cua minh ko in ra dc? 
    	getch();
    }
    IF YOU ARE ALONE , I'LL BE YOUR SHADOW
    IF YOU WANT TO CRY, I'LL BE YOUR SHOULDER
    IF YOU NEED HAPPY, I'LL BE YOUR SMILE
    BUT ANYTIME YOU NEED A FRIEND
    IT JUST BE ME !!!

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi fire_dragon14988 Xem bài viết
    Code:
    void main()
    {
    	clrscr();
    	float r, PI = 3.14;
    	textmode(C80);
    	textbackground(GREEN);
    	window(1, 1, 80, 25);
    	clrscr();
    	//tao cua so mau tim
    	textbackground(MAGENTA);
    	window(20, 8, 60, 18);
    	clrscr();
    	textcolor(YELLOW);
    	cprintf("Ban kinh la: ");
    	textcolor(BLUE);
    	cscanf("%f",&r);
    	textcolor(WHITE);
    	gotoxy(1, 4);
    	cprintf("\nChu vi la: %6.2f",2*PI*r); //Chu vi cua minh ko in ra dc? 
    	getch();
    }
    yêu cầu pót cái tiêu đề bài viết nó dễ theo dõi hộ cái


    bài này chả sai gì cả chỉ thiếu 1 getch(); ở cuối cùng. Thêm 1 cái vào là ok....

    PHP Code:
    [PHP]
    cprintf("\nChu vi la: %6.2f",2*PI*r); //Chu vi cua minh ko in ra dc? 
        
    getch();
        
    getch(); 
    [/PHP]

    tại sao bị trôi thì chờ tẹo , nghỉ tí đã, mình bị hoa mắt......
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    ặc hóa ra là bạn dùng color scanf chứ ko phải scanf ......


    đặc tính của cscanf khác với scanf ở chỗ :
    + scanf sau khi nhận được giá trị vào rồi sẽ để con trỏ stdin ( con trỏ luồn dữ liệu vào : standard input ) trỏ vào kí tự kết thúc trường nhập ( có nhiều kí tự được quy định là kết thúc trường tùy theo hàm nhập, thường là : 13 trong bảng ASCII ). Với cách lệnh nhập tiếp theo được xử lý tiếp ( ví dụ getch() tiếp theo thì nó sẽ đưa con trỏ stdin vào kí tự bên cạnh và tiến hành nhập....
    +cscanf thì nó trỏ vào kí tự cuối cùng mà nó nhập vào chứ ko nhảy sang bên kí tự kết thúc trường này. Do vậy nó sẽ làm getch() tiếp theo bị trôi . ( đặc tính của getch() bị trôi với 1 vài trường hợp ( để ko loãng bài viết tôi xin ko trình bày ở đây )



    ví dụ dễ hiểu :

    luồn nhập vào : _ H E L L O \13
    ( \13 coi là kí tự kết thúc trường nhập, quên cách kí hiệu rồi )
    _ là vị trí con trỏ luồng dữ liệu vào stdin
    scanf xong:
    H E L L O \13

    csanf xong :
    H E L L O \13


    để chứng minh điều tôi nói là đúng bạn chỉ cần làm thế này thôi:
    PHP Code:
        cprintf("\nChu vi la: %6.2f",2*PI*r); 
        
    printf("%c",getch());
        
    getch(); 
    chúc bạn thành công
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    08 2008
    Nơi ở
    TP Hồ Chí Minh
    Bài viết
    28

    các hạ học ở đâu mà pro thế? Cảm ơn rất nhiều

    à cho mình hỏi cái này nữa, thằng cscanf làm trôi stdin như vậy thì r sẽ không nhận được giá trị mình nhập phải ko? cho mình hỏi thêm luôn tác dụng của getch()?
    Đã được chỉnh sửa lần cuối bởi langman : 27-08-2008 lúc 10:17 PM.
    IF YOU ARE ALONE , I'LL BE YOUR SHADOW
    IF YOU WANT TO CRY, I'LL BE YOUR SHOULDER
    IF YOU NEED HAPPY, I'LL BE YOUR SMILE
    BUT ANYTIME YOU NEED A FRIEND
    IT JUST BE ME !!!

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi fire_dragon14988 Xem bài viết
    các hạ học ở đâu mà pro thế? Cảm ơn rất nhiều

    à cho mình hỏi cái này nữa, thằng cscanf làm trôi stdin như vậy thì r sẽ không nhận được giá trị mình nhập phải ko? cho mình hỏi thêm luôn tác dụng của getch()?
    Cái này là phân tích ra thôi mà :|

    (hix bây giờ đang bị hoa mắt )

    đầu tiên mình chạy thử. thấy nhập phát out luôn.

    -> kiểm tra lại ( alt + f5 )
    -> ct ổn => thiếu getch();
    -> thêm 1 cái getch();

    .... nghỉ

    phân tích tiếp :
    getch() bị trôi -> nhận phải kí tự làm getch() trôi

    PHP Code:
    cscanf("%f",&r); 
    cả bài chỉ có cái này là đưa dữ liệu vào stdin. => phán đoán: scanf và cscanf khác nhau


    Vậy thì test 1 cái với cscanf và scanf
    PHP Code:
    cprintf("\nChu vi la: %6.2f",2*PI*r); 
        
    printf("%d",getch());
        
    getch(); 
    thử cái này thì thấy còn kí tự mã 13 làm nó bị trôi.....

    thử với scanf ko lỗi
    => kết luận


    getch() hay bị trôi với các kí tự điều khiển.

    cscanf thì đặc tính của nó vậy, còn có bị sinh lỗi hay ko mình ko test. Nếu có thì cách khắc phục cũng ko khó. Tương tự như lỗi phát sinh với gets() thôi mà.......
    Đã được chỉnh sửa lần cuối bởi langman : 27-08-2008 lúc 10:28 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn