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

Đề tài: Lập trình C | Chia 2 số nguyên trong lập trình C

  1. #1
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Mặc định Lập trình C | Chia 2 số nguyên trong lập trình C

    C Code:
    1. #include "graphics.h"
    2. #include "conio.h"
    3. #include "dos.h"
    4. #include "math.h"
    5. #include "stdlib.h"
    6. #define r 60
    7. #define d 80
    8. #define rad 3.1412/180
    9. #define Mx getmaxx()/2
    10. #define My getmaxy()/2
    11.  
    12. int Pl[10]; // tao do cac dinh
    13. // ve theo drawpoly thi phai khai bao thua 2 gia tri
    14. //neu dung cac dinh thi khi ve lineto(x,y) thi se dai
    15.  
    16. void creat_grap(){    // khoi tao do hoa
    17.    int mh=DETECT, type;
    18.    initgraph(&mh,&type,"c:\\tc\\bgi");
    19.    return;
    20. }//----- eograp
    21.  
    22. void creat_rect(int cl){  // tao hinh chu nhat
    23.   setcolor(cl);
    24.   drawpoly(5,Pl);
    25.   putpixel(Pl[4],Pl[5],random(15));  
    26.   return;
    27. }//-----eorect
    28.  
    29. void DL(){   // tao tre voi delay();
    30.  delay(20);
    31.  return;
    32. }//------ eoDL
    33.  
    34. void update(int ap){ //cap nhat lai thong tin toa do
    35.  Pl[2]=Mx+int(d*cos(ap*rad));Pl[3]=My+int(d*sin(ap*rad));
    36.  Pl[4]=Mx+int(sqrt(d*d+r*r)*cos((ap-180*atan(0.75)/3.1412)*rad));
    37.  Pl[5]=My+int(sqrt(d*d+r*r)*sin((ap-180*atan(0.75)/3.1412)*rad));
    38.  Pl[6]=Mx+int(r*cos((-90+ap)*rad));Pl[7]=My+int(r*sin((-90+ap)*rad));
    39.  Pl[8]=Pl[0];Pl[9]=Pl[1];
    40. }
    41.  
    42. main(){
    43.  creat_grap();  //khoi tao do hoa
    44.  Pl[0]=Mx;Pl[1]=My;
    45.  moveto(Pl[0],Pl[1]);
    46.  int i=0;
    47.  int x,y;
    48.  randomize();
    49.  for(int a=0;a<300;a++){
    50.    putpixel(random(getmaxx()),random(getmaxy()),random(15)+1);
    51.     }
    52.  while(!kbhit()){
    53.  update(i);
    54.  x=random(getmaxx());
    55.  y=random(getmaxy());
    56.  creat_rect(6);
    57.  putpixel(x,y,random(15)+1);
    58.  DL();
    59.  creat_rect(0);
    60.  putpixel(x,y,0);
    61.  i++;
    62.  if(i>360) i=0;
    63.  }
    64.  closegraph();
    65.  return 0;
    66. }//--- eom
    Bài này mình vừa làm giúp đứa em. Ở đây mình khai báo
    #define r 60
    #define d 80
    Tức là rộng và dài. Cái này chuyển sang cho người nhập vào thì đơn giản.
    Mình thắc mắc ở chỗ:
    void update(int ap){ //cap nhat lai thong tin toa do
    Pl[2]=Mx+int(d*cos(ap*rad));Pl[3]=My+int(d*sin(ap*rad));
    Pl[4]=Mx+int(sqrt(d*d+r*r)*cos((ap-180*atan(0.75)/3.1412)*rad));
    Pl[5]=My+int(sqrt(d*d+r*r)*sin((ap-180*atan(0.75)/3.1412)*rad));
    Pl[6]=Mx+int(r*cos((-90+ap)*rad));Pl[7]=My+int(r*sin((-90+ap)*rad));
    Pl[8]=Pl[0];Pl[9]=Pl[1];
    }
    Lẽ ra chỗ atan mình để là r/d tức là rộng chia cho dài. Nhưng mọi cái đều =0 cho dù mình đã đổi kiểu dữ liệu sang fload hoặc cái khác đều cho kết quả là 0 nếu để là r/d;Vậy là tại sao?
    (chỗ in đậm) mình để 0.75 vì ở trên mình khai báo r =60; d=80(hai số này thỏa mãn để tạo thành một tam giác là a+b>sqrt(a*a+b*b)).
    Giúp mình với nhé vì để r/d nó là tổng quát (mang tính động), mấy cái kiểu dữ liệu mình không chắc chắn lắm!
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    NT_OnlyLove thay 2 dòng sau:

    Code:
    #define r 60
    #define d 80
    Thành
    Code:
    #define r 60.0
    #define d 80.0

    Với hầu hết các compiler, biểu thức bên phải dấu '=' (gán) sẽ được được thực hiện trước. Như vậy phép tính r/d của bạn sẽ được hiểu là phép chia dạng int/int.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. Lập trình C cộng trừ nhân chia số nguyên vô hạn trong lập trình C?
    Gửi bởi duckhanh007 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 09-10-2011, 12:14 PM
  2. tách số nguyên tố trong mảng 1 chiều??
    Gửi bởi detective009 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 43
    Bài viết cuối: 26-05-2011, 11:52 PM
  3. hàm về mảng 1 chiều: kiểm tra số nguyên tố trong mảng
    Gửi bởi luckyluke76215 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 09-12-2010, 11:28 PM
  4. tìm số nguyên tố có trong mảng 2 chiều, tính tổng các số nguyên tố đó??
    Gửi bởi lesliuton01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 08-06-2010, 10:21 AM
  5. Chia 2 số nguyên trong C | Phép gán a = 3/2 sai ở đâu ???
    Gửi bởi xiu_coi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 28-04-2009, 04:41 PM

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