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

Đề tài: Lập trình C | Mô phỏng giải thuật sắp xếp = C

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Mặc định Lập trình C | Mô phỏng giải thuật sắp xếp = C

    Mình thấy đây cũng là 1 vấn đề khá thú vị trong đồ hoạ C . Mình chỉ mô phỏng được giải thuật sắp xếp chọn trực tiếp thôi ^^ . Code mình dài và dở . Các bạn nắm sơ ý tưởng chạy thử . Bạn nào mô phỏng được những cái khác thì post lên nghen . Thanks .

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<math.h>
    #include<dos.h>
    #include<process.h>
    #include<alloc.h>
    #include<stdlib.h>
    #include<graphics.h>
    
    #define max 10
    #define X 50
    #define Y 50
    #define HTREN 50
    #define HDUOI 100
    #define XSO 20
    #define YSO 70
    typedef struct diem
    		   {
    		    int x,y,cs;
    		   };
    
    void khoitaodh(void)
    {
     int gd,gm;
     gd=gm=0;
     initgraph(&gd,&gm,"C:\\BORLANDC\\BGI");
    }
    
    void khoitaomang(diem d[])
    {
     int k=X;
     randomize();
     for(int i=0;i<10;i++)
     {
      d[i].x=k;
      d[i].y=Y;
      d[i].cs=random(99);
      k+=50;
     }
    }
    
    char *saoluumuitenxuong(void)
    {
     int n;
     line(10,10,10,30);
     line(5,20,10,30);
     line(15,20,10,30);
    
     n=imagesize(5,10,15,30);
     char *p;
     p=(char*)malloc(sizeof(char)*n);
     getimage(5,10,15,30,p);
     putimage(5,10,p,XOR_PUT);
     return p;
    }
    
    char *saoluumuitenlen(void)
    {
     int n;
     line(10,10,10,30);
     line(5,20,10,10);
     line(15,20,10,10);
    
     n=imagesize(5,10,15,30);
     char *p;
     p=(char*)malloc(sizeof(char)*n);
     getimage(5,10,15,30,p);
     putimage(5,10,p,XOR_PUT);
     return p;
    }
    
    void mtl_cd(int oldx,int oldy,int x,int y,char *mtl)
    {
     putimage(oldx,oldy,mtl,XOR_PUT);
     putimage(x,y,mtl,COPY_PUT);
    }
    
    void mtx_cd(int oldx,int oldy,int x,int y,char *mtx)
    {
     putimage(oldx,oldy,mtx,XOR_PUT);
     putimage(x,y,mtx,COPY_PUT);
    }
    
    void giaodien(diem d[],char *mtl,char *mtx)
    {
     int i;
     char s[5];
     setcolor(GREEN);
     for(i=0;i<10;i++)
     line(d[i].x,d[i].y,d[i].x,d[i].y+Y);
     outtextxy(X-20,Y-HTREN,"I");
     outtextxy(X-20,Y+HDUOI,"J");
     settextstyle(0,0,2);
     outtextxy(X-50,Y+200,"CHUONG TRINH MINH HOA KT SAP XEP MANG");
     putimage(X+20,Y-HTREN,mtx,COPY_PUT);
     putimage(X+20,Y+HDUOI,mtl,COPY_PUT);
     for(i=0;i<10;i++)
     outtextxy(d[i].x+10,d[i].y+25,itoa(d[i].cs,s,10));
    }
    
    void hoanvi(int &x,int &y)
    {
     int t;
     t=x;
     x=y;
     y=t;
    }
    
    void so_cd(diem d[],int i,int j)
    {
     char *ptren,*pduoi;
     int n,xtren,ytren,xduoi,yduoi,k=5;
     n=imagesize(d[i].x+3,d[i].y+23,d[i].x+45,d[i].y+42);
     ptren=(char*)malloc(sizeof(char)*n);
     pduoi=(char*)malloc(sizeof(char)*n);
     getimage(d[i].x+3,d[i].y+23,d[i].x+45,d[i].y+42,ptren);
     getimage(d[j].x+3,d[j].y+23,d[j].x+45,d[j].y+42,pduoi);
     xtren=d[i].x;
     ytren=d[i].y;
     xduoi=d[j].x;
     yduoi=d[j].y;
     while((xtren!=d[j].x)||(ytren!=d[j].y)||xduoi!=d[i].x||yduoi!=d[i].y)
     {
      putimage(xtren+3,ytren+23,ptren,XOR_PUT);
      putimage(xduoi+3,yduoi+23,pduoi,XOR_PUT);
    
      if(ytren>5&&xtren==d[i].x) ytren-=k;
      else if(xtren<d[j].x) xtren+=k;
      else if(ytren<Y) ytren+=k;
    
      if(yduoi<95&&xduoi==d[j].x) yduoi+=k;
      else if(xduoi>d[i].x) xduoi-=k;
      else if(yduoi>Y) yduoi-=k;
    
      putimage(xtren+3,ytren+23,ptren,COPY_PUT);
      putimage(xduoi+3,yduoi+23,pduoi,COPY_PUT);
      delay(100);
     }
     hoanvi(d[i].cs,d[j].cs);
    }
    void main()
    {
     clrscr();
     diem d[10];
     char *mtl,*mtx;
     int oldx,oldy,i,j;
    
     khoitaodh();
     khoitaomang(d);
     mtl=saoluumuitenlen();
     mtx=saoluumuitenxuong();
     giaodien(d,mtl,mtx);
    
    
      for(i=0;i<9;i++)
      {
       delay(100);
       oldx=d[i].x;
       oldy=d[i].y;
       putimage(oldx+20,oldy+HDUOI,mtl,COPY_PUT);
       for(j=i+1;j<10;j++)
       {
        delay(100);
        mtl_cd(oldx+20,oldy+HDUOI,d[j].x+20,d[j].y+HDUOI,mtl);
        oldx=d[j].x;
        oldy=d[j].y;
        if(d[i].cs>d[j].cs)
        so_cd(d,i,j);
       }
       mtx_cd(d[i].x+20,d[i].y-HTREN,d[i+1].x+20,d[i+1].y-HTREN,mtx);
       putimage(d[9].x+20,d[9].y+HDUOI,mtl,XOR_PUT);
      }
     getch();
     closegraph();
    }

  2. #2
    Ngày gia nhập
    03 2008
    Bài viết
    3

    sao mìn không chạy đc nhỉ nó báo
    BGI Error: Graphics not initialized <use 'initgraph'>
    mình mới học c nên còn gà lắm mong bạn chỉ giáo

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Bạn phải vào mục option>linker>librarian> và check vào ô graphics ( hay graph gì đó mình ko nhớ rõ ) thì mới bật chế độ đồ hoạ được. Thân .

  4. #4
    Ngày gia nhập
    03 2008
    Bài viết
    3

    mình cũng chọn graphics nhưng nó không chạy được rồi báo lỗi nhưng mình viết bên trên

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    3


  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Mặc định Lập trình C | Mô phỏng giải thuật sắp xếp = C

    Các cậu để ý hàm này của sieuphuong
    C Code:
    1. void khoitaodh(void)
    2. {
    3.  int gd,gm;
    4.  gd=gm=0;
    5.  initgraph(&gd,&gm,"C:\\BORLANDC\\BGI");
    6. }
    - Chỉnh sửa đường dẫn trong hàm trên cho phù hợp với máy của bạn. (Chú ý)
    - Theo đường dẫn Option\Linker\Libraries... Check vào mục Graphics library (đối với BC++)
    Như vậy thì có thể chạy được.
    Không biết ghi gì luôn ...

  7. #7
    Ngày gia nhập
    04 2007
    Nơi ở
    Bà Trưng quê ở Mê Linh
    Bài viết
    29

    very good, very like. Mình vẫn sài được mà. Thanks sieuphuong.
    >"<

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

  1. Giải thuật shaker sort. Giúp mình giải thuật với?
    Gửi bởi nguyenhai trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 29-01-2015, 10:53 PM
  2. Giải thuật Giải thuật Chia để trị, hướng đi với giải thuật này thế nào?
    Gửi bởi maivivan13 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 0
    Bài viết cuối: 23-10-2012, 10:22 PM
  3. Bài tập C Cần giải giúp 3 câu trong đề thi kĩ thuật lập trình C và Cấu trúc dữ liệu và giải thuật
    Gửi bởi nguyenthi0602 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-09-2012, 08:42 PM
  4. Giải thuật xắp xếp Quick sort, biểu diễn bằng hình ảnh giải thuật này?
    Gửi bởi yuklong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 09-06-2012, 09:20 AM
  5. Tài liệu về giải thuật mã hóa. Mã hóa file theo giải thuật DES. Ai có giúp mình?
    Gửi bởi daolong83 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 6
    Bài viết cuối: 17-07-2009, 11:28 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