Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
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();
    }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  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ông cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    >"<

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