Hiển thị các bài đăng có nhãn Lập trình C. Hiển thị tất cả bài đăng

CODE vẽ đồ thị sin chuyển đổi quan sát

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <math.h>
using namespace std;
int  xv1,yv1,xv2,yv2;
float xw1,xw2,yw1,yw2; // cac toa cua cua cua so va khung nhin
float tlx,tly; // ty le

void cuaso(float x1,float y1,float x2,float y2)
{
xw1=x1; xw2=x2; yw1=y1;yw2=y2;  // khoi tao cua so
}
void khungnhin(float x1,float y1,float x2,float y2)
{
  xv1=x1;yv1=y1; xv2=x2; yv2=y2;          // khung nhin
  tlx=(float)(xv2-xv1)/(xw2-xw1);                  // tinh ty le x
  tly=(float)(yv2-yv1)/(yw2-yw1);                  // tinh ty le y
}

void chuyenden(float x,float y)
{
  int xm,ym;
  xm=(int)(tlx*(x-xw1)+xv1+0.5);
  ym=(int)(tly*(yw2-y)+yv1+0.5);
  moveto(xm,ym);
}

void veden(float x,float y)
{
  int xm,ym;
  xm=(int)(tlx*(x-xw1)+xv1+0.5);
  ym=(int)(tly*(yw2-y)+yv1+0.5);
  lineto(xm,ym);
}

void vehetruc()
{
setcolor(4);
float x0=0,y0=0,dy=0.01;
chuyenden(x0,y0);
outtextxy(10,10,"Do thi hinh sin coppyright 2015 by NguyenTan");
for(int i=0;i<1000;i++){
x0=x0+dy;
veden(x0,y0);
}
x0=0;y0=0;
chuyenden(x0,y0);
for(int i=0;i<500;i++){
y0=y0+dy;
veden(x0,y0);
}
x0=0,y0=0;
chuyenden(x0,y0);
for(int i=0;i<500;i++){
x0=x0-dy;
veden(x0,y0);
}
x0=0;y0=0;
chuyenden(x0,y0);
for(int i=0;i<500;i++){
y0=y0-dy;
veden(x0,y0);
}

}

void vedothi()
{
setcolor(2);
float dx=0.01;
float x=xw1;
float y=sin(x);
chuyenden(x,y);
while(x<=xw2){
x=x+dx;
y=sin(x);
veden(x,y);
}
}
int main()
{
int gr=0,gm;
cuaso(-M_PI,-1.5,3*M_PI,1.5);
khungnhin(150,150,300,250);
initgraph(&gr,&gm,"");
vehetruc();
vedothi();
getch();
closegraph();
return 0;
}

CODE tô màu hình thang

#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<iostream>
using namespace std;
struct diem{
int x,y;
};
diem A,B,C,D;
void tomauhinhthang(diem A,diem B,diem C,diem D,int mt)
{
setcolor(mt);
setlinestyle(0,0,0);
float m1=(float) (D.x-A.x)/(D.y-A.y);
float m2=(float) (C.x-B.x)/(C.y-B.y);
int y=A.y+1,x1,x2;
while(y<D.y){
x1=(int) (m1*(y-A.y)+A.x);
x2=(int) (m2*(y-B.y)+B.x);
delay(10);
line(x1+1,y,x2,y);
//cout<<x1<<"\t"<<y<<"\t"<<x2<<"\t"<<y<<"\n";
//for(int x=x1+1;x<x2;x++)
//putpixel(x,y,mt);
y++;
}
}
void hinhthang(diem A,diem B, diem C,diem D)
{
setcolor(3);
setlinestyle(1,0,0);
line(A.x,A.y,D.x,D.y);
line(D.x,D.y,C.x,C.y);
line(A.x,A.y,B.x,B.y);
line(B.x,B.y,C.x,C.y);
}
void ktdh()
{
int gd=0,gm,maloi;
initgraph(&gd,&gm,"");
maloi=graphresult();
if(maloi!=0){
cout<<"Loi do hoa";
getch();
exit(0);
}
else{
cout<<"khoi tao thanh cong";
cout<<"product by NguyenTan";
}
}

int main()
{
A.x=100; A.y=100;
B.x=400; B.y=100;
C.x=280; C.y=300;
D.x=150; D.y=300;
ktdh();
hinhthang(A,B,C,D);
tomauhinhthang(A,B,C,D,4);
getch();
closegraph();
return 0;
}

Code Danh sách móc nối đơn


/*DANH SACH MOC NOI DON QUAN LY SINH VIEN*/
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<string.h>
using namespace std;

struct SINHVIEN{
char masv[10];
char hoten[20];
float dtb;
};

struct Node{
SINHVIEN infor;
Node *next;
} *L;

void nhap(Node *&L)
{
Node *q; char s[10];
L=new Node;
q=L;
cout<<"Nhap vao ma sinh vien : "; fflush(stdin); gets(L->infor.masv);
cout<<"Nhap ho ten sinh vien :"; fflush(stdin); gets(L->infor.hoten);
cout<<"diem trung binh : "; cin>>L->infor.dtb;
cout<<"Nhap vao ma sinh vien :"; fflush(stdin); gets(s);
while(strcmp(s,""))
{
q->next=new Node;
q=q->next;
strcpy(q->infor.masv,s);
cout<<"Nhap ho ten sinh vien :"; fflush(stdin); gets(q->infor.hoten);
cout<<"diem trung binh : "; cin>>q->infor.dtb;
cout<<"Nhap vao ma sinh vien :"; fflush(stdin); gets(s);
}
q->next=NULL;
}

void nhap2(Node *&L)
{
Node *q;char s[10];
L=new Node;
q=L;
cout<<"Nhap ma sinh vien : "; fflush(stdin); gets(L->infor.masv);
cout<<"Nhap ho ten sinh vien : ";fflush(stdin); gets(L->infor.hoten);
cout<<"diem trung binh : "; cin>>L->infor.dtb;
cout<<"Nhap ma sinh vien : "; fflush(stdin); gets(s);
while(strcmp(s,""))
{
Node *p=L;
while(p!=p&&strcmp(s,p->infor.masv))
p=p->next;
if(strcmp(p->infor.masv,s)) {
q->next=new Node;
q=q->next;
strcpy(q->infor.masv,s);
cout<<"Nhap ho ten sinh vien : "; fflush(stdin); gets(q->infor.hoten);
cout<<"dien trung binh : "; cin>>q->infor.dtb;
}
else
cout<<"\tMa Trung Roi Kia nhap lai di !!! \n ";
cout<<"Nhap ma sinh vien : ";
fflush(stdin); gets(s);
}
q->next=NULL;
}

void hien(Node *L)
{
if(L!=NULL)
{
cout<<"========== DANH SACH SINH VIEN ==========\n";
while(L!=NULL)
{
cout<<setw(10)<<L->infor.masv<<setw(10)<<L->infor.hoten<<setw(10)<<L->infor.dtb<<endl;
L=L->next;
}
}
else cout<<"Danh Sach trong roi\n";
}

void sapgiam(Node *L)
{
Node *q,*p;SINHVIEN tg;
if(L!=NULL)
{
q=L;
while(q->next!=NULL)
{
p=q->next;
while(p!=NULL)
{
if(p->infor.dtb > q->infor.dtb)
{
tg=p->infor;
p->infor=q->infor
;q->infor=tg;
}
p=p->next;
}
q=q->next;
}
}
}


void saptang(Node *L)
{
Node *q,*p;SINHVIEN tg;
if(L!=NULL)
{
q=L;
while(q->next!=NULL)
{
p=q->next;
while(p!=NULL)
{
if(p->infor.dtb < q->infor.dtb)
{
tg=q->infor;
q->infor=p->infor;
p->infor=tg;
}
p=p->next;
}
q=q->next;
}
}
}

void loaidau(Node *&L)
{
Node *q;
q=L;
L=L->next;
delete q;
}
void loaicuoi(Node *&L)
{
Node *q;
if(L!=NULL)
{
if(L->next==NULL)
{
L=NULL;
delete L;
}
else{
q=L;
while(q->next->next!=NULL)
q=q->next;
Node *p;
p=q->next;
q->next=NULL;
delete p;
}
}
}

void loaitang(Node *&L)
{
Node *q;
if(L!=NULL){
while(L!=NULL&&L->infor.dtb<5)
{
q=L;
L=L->next;
delete q;
}
}
}

void loaigiam(Node *&L)
{
Node *q,*p;
if(L->infor.dtb<5){
L=NULL;
delete L;
}
if(L!=NULL){
p=L;
while(p->next!=NULL&&p->next->infor.dtb>=5)
p=p->next;
q=p->next;
p->next=NULL;
delete q;

}
}

void loai(Node *&L)
{
Node *q=L,*p;
if(L!=NULL){
while(q->next!=NULL)
{
if(q->next->infor.dtb<5)
{
p= q->next;
q->next=p->next;
delete p;
}
else
q=q->next;
}
if(L->infor.dtb<5){
p=L;
L=L->next;
delete p;
}
}
}

void chendau(Node *&L)
{
Node *x;
x=new Node;
cout<<"Nhap vao thong tin sinh vien can chen :\n";
cout<<"Mã sinh vien : "; fflush(stdin); gets(x->infor.masv);
cout<<"Ho ten sinh vien : "; fflush(stdin); gets(x->infor.hoten);
cout<<"Diem trung binh : "; cin>>x->infor.dtb;
x->next=L;
L=x;
}

void chencuoi(Node *&L)
{
Node *x;
x=new Node;
cout<<"Nhap vao sinh vien can chen :\n";
cout<<"Nhap ma sv : "; fflush(stdin); gets(x->infor.masv);
cout<<"Ho ten sinh vien : "; fflush(stdin); gets(x->infor.hoten);
cout<<"Diem trung binh : "; cin>>x->infor.dtb;
if(L!=NULL){
Node *q=L;
while(q->next!=NULL)
q=q->next;
q->next=x;
}
else L=x;

}

void chensxt(Node *&L)
{
Node *x;
x=new Node;
cout<<"Nhap vao thong tin sinh vien can chen : ";
cout<<"Nhap ma sinh vien : "; fflush(stdin); gets(x->infor.masv);
cout<<"Nhap vao ho ten sinh vien : "; fflush(stdin); gets(x->infor.hoten);
cout<<"diem trung binh : "; cin>>x->infor.dtb;
if(L!=NULL)
{
if(L->infor.dtb > x->infor.dtb)
{
x->next=L;
L=x;
}
else{
Node *p=L;
while(p->next!=NULL&&x->infor.dtb < p->next->infor.dtb)
{
x->next=p->next;
p->next=x;
}
}
}
else L=x;
}

void chensxg(Node *&L)
{
Node *x;
x=new Node;
cout<<"Nhap vao thong tin sinh vien can chen : ";
cout<<"Nhap ma sinh vien : "; fflush(stdin); gets(x->infor.masv);
cout<<"Nhap vao ho ten sinh vien : "; fflush(stdin); gets(x->infor.hoten);
cout<<"diem trung binh : "; cin>>x->infor.dtb;
if(L!=NULL)
{
if(L->infor.dtb > x->infor.dtb)
{
x->next=L;
L=x;
}
else{
Node *p=L;
while(p->next!=NULL&&x->infor.dtb < p->next->infor.dtb)
{
x->next=p->next;
p->next=x;
}
}
}
else L=x;
}

void daochieu(Node *&L)
{
if(L!=NULL)
{
Node *p,*q;
q=NULL;p=L;
while(L->next!=NULL){
L=L->next;
p->next=q;
q=p;
p=L;
}
L->next=q;
}
}

void trungma(Node *&L)
{
if(L!=NULL)
{
Node *q,*p,*k;

p=L;
while(p->next!=NULL)
{
q=p;
while(q->next!=NULL)
{
if(strcmp(q->next->infor.masv,p->infor.masv)==0)
{
k=q->next;
q->next=k->next;
delete k;
}
else q=q->next;
}
if(p->next!=NULL) p=p->next;
}
}
}

int main()
{
nhap(L);
//nhap2(L);
hien(L);
//saptang(L);
//loaitang(L);
//chensxt(L);
//sapgiam(L);
//loaigiam(L);
//loai(L);
//loaidau(L);
//loaicuoi(L);
//chendau(L);
//chencuoi(L);
//daochieu(L);
trungma(L);
hien(L);
return 0;
}

code đồ họa vẽ đường tròn

vẽ đường tròn bằng các thuật toán làm tròn số,bresenham ,midpoint :
#include<conio.h>
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<graphics.h>
using namespace std;
void ktdh()
{
    int gd=0,gm;
    initgraph(&gd,&gm,"");
}
void nhap(int &x,int &y,int &R)
{
    cout<<"Nhap vao toa do tam O\n";
    cout<<"nhap x = ";
    cin>>x;
    cout<<"Nhap y = ";
    cin>>y;
    cout<<"Nhap vao ban kinh duong tron : ";
    cin>>R;
}
void put8pixel(int x0,int y0,int x,int y)
{
    putpixel(x+x0,y+y0,5);
putpixel(y+x0,x+y0,5);
putpixel(-x+x0,-y+y0,5);
putpixel(-y+x0,-x+y0,5);
putpixel(-x+x0,y+y0,5);
putpixel(-y+x0,x+y0,5);
putpixel(x+x0,-y+y0,5);
putpixel(y+x0,-x+y0,5);;
}
void lamtronso(int x0,int y0,int R)
{
    int x,y;
    x=0;y=R;
    while(x<=y)
    {
        y=round(sqrt(R*R-x*x));
        put8pixel(x0,y0,x,y);
        x++;
    }
}
void bresenham(int x0,int y0,int R)
{
    int x,y;
    x=0;y=R;
    int p=3-2*R;
    while(x<=y)
    {
        if(p<0) p=p+4*x-6;
        else{
            y--;
            p=p+4*(x-y+10);
        }
        put8pixel(x0,y0,x,y);
        x++;
    }
}
void midpoint(int x0,int y0,int R)
{
    int x,y;
    x=0;y=R;
    float P=5/4-R;
    cout<<P;
    while(x<=y)
    {
        if(P<0) P=P+2*x+3;
        else{
            y--;
            P=P+2*(x-y)+5;
        }
        put8pixel(x0,y0,x,y);
        x++;
    }
}
int main()
{
    ktdh();
    lamtronso(200,200,50);
    bresenham(200,200,100);
    midpoint(200,200,150);
    getch();
    closegraph();
}

XÁC ĐỊNH ĐỘ PHỨC TẠP THUẬT TOÁN

Cách tính độ phức tạp của một số giải thuật đơn giản.
QUY TẮC XÁC ĐỊNH ĐỘ PHỨC TẠP
•         Độ phức tạp tính toán của giải thuật: O(f(n))
•         Việc xác định độ phức tạp tính toán của giải thuật trong thực tế có thể tính bằng một số quy tắc đơn giản sau:
–        Quy tắc bỏ hằng số:
            T(n) = O(c.f(n)) = O(f(n)) với c là một hằng số dương
–        Quy tắc lấy max:
            T(n) = O(f(n)+ g(n)) = O(max(f(n), g(n)))
–         Quy tắc cộng:
            T1(n) = O(f(n))                     T2(n) = O(g(n))
            T1(n) + T2(n) = O(f(n) + g(n))
–         Quy tắc nhân:
            Đoạn chương trình có thời gian thực hiện T(n)=O(f(n))
            Nếu thực hiện k(n) lần đoạn chương trình với k(n) = O(g(n)) thì độ phức tạp sẽ là O(g(n).f(n))

PHÉP TOÁN TÍCH CỰC (BEST PROXY)
•         Trong một thuật toán, ta chú ý đặc biệt đến một phép toán gọi là phép toán tích cực. Đó là phép toán mà số lần thực hiện không ít hơn các phép toán khác
•         Ví dụ 1:
s = 0;
for (i=0; i<=n;i++){
            p =1;
            for (j=1;j<=i;j++)
                        p=p * x / j;
            s = s+p;
}
Phép toán tích cực là p = p * x / j
Số lần thực hiện phép toán này là
            0+1+2+…+n = n(n-1)/2 = n2/2 – n/2
=> Vậy độ phức tạp là O(n2/2 – n/2)
= O(n2/2)       sử dụng quy tắc lấy max
= O(n2)           sử dụng quy tắc bỏ hằng số
           
•         Ví dụ 2:
s = 1; p = 1;
for (i=1;i<=n;i++) {
            p = p * x / i;
            s = s + p;
}
Phép toán tích cực là p = p * x / i
Số lần thực hiện phép toán là n
=> Vậy độ phức tạp của thuật toán là O(n)
                       
•         Ví dụ 3:
s=n*(n-1) /2;
=> Độ phức tạp của thuật toán là O(1), nghĩa là thời gian tính toán không phụ thuộc vào n
  
•         Ví dụ 4:
Thuật toán tính tổng các số từ 1 đến n     
s=0;
for (i= 1;i<=n;i++)
            s=s+i;
Vòng lặp lặp n lần phép gán s = s+i, nên thời gian tính toán tỉ lệ thuận với n, tức độ phức tạp là O(n).
=> độ phức tạp là O(n)

•         Ví dụ 5:
for (i= 1;i<=n;i++)
            for (j= 1;j<=n;j++)
                        //Lệnh
=> Dùng quy tắc nhân ta có O(n^2)
tương tự như vậy ta sẽ có O(n^3), O(n^4).

•         Ví dụ 6:
for (i= 1;i<=n;i++)
            for (j= 1;j<=m;j++)
                        //Lệnh
=> Dùng quy tắc nhân ta có O(n*m)

•         Ví dụ 7:
for (i= 1;i<=n;i++)
            //lệnh1
for (j= 1;j<=m;j++)
            //lệnh 2
=> Dùng quy tắc cộng và quy tắc lấy max, sẽ có
            O(max (n,m))

•         Ví dụ 8:         
for (i= 1;i<=n;i++) {
            for (u= 1;u<=m;u++) 
                        for (v= 1;v<=n;v++)
                                    //lệnh
            for j:= 1 to x do 
                        for k:= 1 to z do 
                                    //lệnh
}
=> O(n*max (n*m,x*z))

•         Ví dụ 9:
for (i= 1;i<=n;i++) 
            for (j= 1;j<=m;j++) {
                        for (k= 1;k<=x;k++) 
                                    //lệnh
                        for (h= 1;h<=y;h++) 
                                    //lệnh
            } 
=> O(n*m* max (x,y))

•         Ví dụ 10:
for (i= 1;i<=n;i++)
            for (u= 1;u<= m;u++)
                        for (v= 1;v<=n;v++) 
                                    //lệnh 
for (j= 1;j<=x;j++) 
                        for (k= 1;k<=z;k++) 
                                    //lệnh 
=> O(max (m*n^2,x*z)) 

•         Ví dụ 11: Đoạn chương trình tính tổng 2 đa thức
P(x) = xmxm+am-1xm-1+ …+a1x+a0
Q(x) = bnxn+bn-1xn-1+…+b1x+b0
if (m<n) p = m; else p =n;
for (i=0;i<=p;i++)
            c[i]=a[i] + b[i];
if (p<m)
            for (i=p+1;i<=m;i++) c[i] = a[i];
else
            for (i=p+1;i<=n;i++) c[i] = b[i];
while (p>0 && c[p] = 0) p = p-1;
=> Độ phức tạp: O(max(m,n))

•         Ví dụ 12: Đoạn chương trình tính tích hai đa thức
P(x) = xmxm+am-1xm-1+ …+a1x+a0
Q(x) = bnxn+bn-1xn-1+…+b1x+b0
p = m+n;
for (i=0;i<=p;i++) c[i] = 0;
for (i=0;i<=m;i++)
            for (j=0;j<=n;j++)
                        c[i+j] = c[i+j] + a[i] + b[j];
=> Độ phức tạp là O(m.n)

Sắp xếp theo chiều tăng của độ phức tạp, các độ phức tạp đặt trên cùng hàng là tương đương
            1, 2100
            log n
            n log n, log (n!)
            n2
            (log n)log n, nlog(log n)
            2n
3nn!

Thuật toán chia để trị (Divide and conquer algorithm)

Thuật toán chia để trị (Divide and conquer algorithm)
Nội dung thuật toán:
  Ðể giải một bài toán kích thước n, ta chia bài toán đã cho thành một số bài toán con có kích thưóc nhỏ hơn. Giải các bài toán con này rồi tổng hợp kết quả lại để được lời giải của bài toán ban đầu.
  Ðối với các bài toán con, chúng ta lại sử dụng kỹ thuật chia để trị để có được các bài toán kích thước nhỏ hơn nữa. Quá trình trên sẽ dẫn đến những bài toán mà lời giải chúng là hiển nhiên hoặc dễ dàng thực hiện, ta gọi các bài toán này là bà itoán cơ sở
Nội dung thuật toán gồm 3 thànhphần:
- Chia: phân tích bài toán có N thành phần dữ liệu thành nhiều bài toán con có kích thước dữ liệu nhỏ hơn
- Trị: giải bài toán con bằng phương pháp đệ quy. Tuy nhiên nếu bài toán con đủ nhỏ, có thể giải quyết theo cách đơn giản
- Tổng hợp: tổng hợp nghiệm của các bài toán con thành nghiệm của bài toán ban đầu
 
o Các bài toán phổ biến sử dụng thuật toán chia để trị
1) Sắp xếp kiểu trộn (Merge sort)
2) Tìm kiếm nhị phân (Binary search)
3) Sắp xếp nhanh (Quick sort)
4) Nhân các số nguyên lớn
5) Xếp lịch thi đấu thể thao
6) Tìm phần tử lớn nhất của mảng
7) Tìm phần tử trung bình của mảng
8) Tìm dãy con có tổng lớn nhất
9) Tìm cặp điểm gần nhau nhất 
10) Phủ bàn cờ Tromino
 
Ví dụ: Sắp xếp kiểu trộn (Merge Sort)
Cho 1 dãy số M có N phần tử nguyên. Viết thuật toán sắp xếp dãy số M tăng dần
Chia: phân chia dãy N phần tử sẽ được sắp xếp thành 2 dãy con, mỗi dãy có N/2 phần tử
Trị: dùng kỹ thuật trộn 2 dãy con đã được sắp xếp thành dãy kết quả được sắp xếp. Quá trình này xảy ra khi các dãy con không thể phân chia được nữa
Tổng hợp: tổng hợp kết quả của 2 dãy con đã được sắp xếp thành dãy được sắp xếp
 
 Độ phức tạp thuật toán: O(n logn)
 
Giả sử muốn sắp xếp dãy con M có k phần tử, các phần tử có chỉ số từ low đến high 
Thuật toán sắp xếp (M, low, high) như sau:
Nếu low<high thì 
mid = (low+high)/2
Gọi đệ quy sắp xếp nửa trước của dãy M có chỉ số từ low đến mid
Gọi đệ quy sắp xếp nửa sau của dãy M có chỉ số từ mid+1 đến high
Trộn 2 dãy con tăng thành dãy ban đầu
public void sapXep(int[] M, int low; int high){
if (low<high) {
mid=(low+high) / 2;
sapXep(M, low, mid);
sapXep(M, mid+1, high);
tron(M, low, mid, high);
}
}
tron(): trộn 2 dãy con tăng thành một dãy con tăng

Cài Đặt Đồ Họa trong codeblock


Đầu Tiên các Bạn tải file này về:
 http://www.mediafire.com/download/b253ah9mefebxsz/C%2B%2B.rar
Cài đặt Codeblock như bình thường
Sau khi đã cài đặt Code::Block và tải thư viện WinBGIm về máy tính. Các bạn làm theo các bước sau đây:
Bước 1. Giải nén file WinBGIm_Library6_0_Nov2005.rar ra một thư mục nào đó tùy ý bạn. Kết quả giải nén là 3 file: graphics.h, libbgi.a, winbgim.h
Bước 2. Copy các tập tin trên vào các thư mục như sau:
  • Đối với hệ điều hành Windows 64 bit
    • Copy 2 file graphics.h và winbgim.h vào thư mục C:\Program Files (x86)\CodeBlocks\MinGW\include
    • Copy file libbgi.a vào thư mục C:\Program Files (x86)\CodeBlocks\MinGW\lib
  • Đối với hệ điều hành Windows 32 bit
    • Copy 2 file graphics.h và winbgim.h vào thư mục C:\Program Files\CodeBlocks\MinGW\include
    • Copy file libbgi.a vào thư mục C:\Program Files\CodeBlocks\MinGW\lib
Bước 3. Mở Code::Blocks và thực hiện các bước cấu hình đồ họa:
  • Chọn menu Settings -> Compiler and debugger -> Linker settings -> Add -> Browse (dấu ...)
  • Chọn đường dẫn chứa tập tin libbgi.a
  • Nhìn qua bên tay phải, có mục Other linker options, gõ dòng lệnh sau: -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 
  • Kết quả cấu hình giống như hình bên dưới:

  • Click OK để tắt cửa sổ cũng như hoàn tất việc cấu hình
Bước 4. Kiểm tra thử xem có cấu hình thành công hay không bằng một chương trình đồ họa nho nhỏ.
  • Tại Code::Blocks, click menu File -> New -> Empty File (hoặc nhấn tổ hợp phím Ctrl+Shift +N) để tạo một tập tin C++ mới
  • Tiếp tục click vào File -> Save file (hoặc nhấn tổ hợp phím Ctrl+S) để đặt tên file là vidu.cpp (các bạn có thể đặt tên khác như phần mở rộng bắt buộc là .cpp, nếu không phải .cpp thì sẽ không lập trình đồ họa được)
  • Gõ đoạn code sau: click để tải vidu.cpp
  • Nhấn F9 để thực thi đoạn chương trình. Kết quả chương trình sẽ như sau: