You are on page 1of 27

P N GIO TRNH 77 BI TP C++

Tc gi cc li gii ny: blackrose4s Din n http://cnttdhsupham.forumotion.com


Bi 3:
#include <iostream>
using namespace std;
const float pi=3.14;
void main()
{
int r;
cout<<"Nhap vao ban kinh hinh tron : ";
cin>>r;
float s=pi*pi*r;
cout<<"Dien tich hinh tron co ban kinh "<<r<<" la "<<s<<endl;
}
Bi 7:
#include <iostream> using namespace std;
#include <conio>
int main() {
char MS[20],HT[100],QQ[100]; \\Ch 1
int NS;
float DTB;
cout<<"Nhap ma so sinh vien \n";
cin.getline(MS,20); \\Ch 2
cout<<"Nhap Ho Ten \n";
cin.getline(HT,100);
cout<<"Nhap que quan \n";
cin.getline(QQ,100);
cout<<"Nhap nam sinh \n";
cin>>NS;
cout<<"Nhap diem trung binh cac nam hoc \n";
cin>>DTB;
cout<<"**** Thong tin sinh vien ****";
cout<<"\n MSSV: "<
cout<<"\n Ho ten: "<
cout<<"\n Que quan: "<
cout<<"\n Nam sinh: "<
1

cout<<"\n Diem trung binh cac nam hoc: "<


getch();
return 0;
}
Ch 1:C th khai bo bin chui k t theo kiu char bin[ rng(ti a 255)] . Nhc
im l chui ch c ti a 255 k t thi .
Ch 2: Dng hm cin.getline(bin, rng) c th nh c khong trng khi nhp tn
hoc qu qun. Ci ny phi s dng ring do tnh cht ca hm cinkhng nhp c chui k t
c khong trng
Bi 8:
#include <iostream> using namespace std;
#include <conio>
#include <math>
int main() {
float a,b,c,p,S;
cout<<"Nhap 3 canh tam giac ";
cin>>a>>b>>c;
p=(a+b+c)/2;
S=sqrt(p*(p-a)*(p-b)*(p-c));
cout<<"Dien tich tam giac la: "<
getch();
return 0;
}
Bi 9:
#include <iostream> using namespace std;
#include <conio>
#include <math>
int main() {
float xA,xB,yA,yB;
cout<<" Nhap xA,yA,xB,yB ";
cin>>xA>>yA>>xB>>yB;
cout<<"\n Trung diem co toa do la I("<<float((xA+xB)/2)<<","<<float((yA+yB)/2)<<")"; \\Ch

getch();
return 0;
}
2

+Ch : rt ngn bi gii v khi phi khai bo thm bin x1, x2. Ta c th dng
hm cout a ra mn hnh gi tr ca x1 hay x2 thng qua biu thc tnh ca n v t biu thc
trong float() a ra mn hnh gi tr thc
Bi 11:
#include <iostream> using namespace std;
#include <conio>
int main() {
float a,b,c,x;
cout<<"Nhap a,b,c,x ";
cin>>a>>b>>c>>x;
cout<<"f= "<<float(a*x*x+b*x+c);
getch();
return 0;
}
Bi 13:
#include<iostream>
using namespace std;

void main()
{
int a;
cout<<"Nhap vao mot so nguyen ";
cin>>a;
if (a%2==0) cout<<"So chan";
else cout<<"So le";
cout<<"\n";
}
Bi 15:
#include <iostream> using namespace std;
#include <conio>
int main() {
char a,b; //B1
int c,d;
cout<<"Anh ra cai \n"; //B2
cin>>a;
if (a=='B') c=1;
3

else if (a=='O') c=2;


else c=3;
cout<<"Em ra cai \n";
cin>>b;
if (b=='B') d=1;
else if (b=='O') d=2;
else d=3;
switch(c^d) { //B3
case 0: // draw //B4
cout<<"Hoa roi!";
break;
case 1: // KEO vs BAO
if(a=='K')
cout<<"Anh thang - Em thua";
else
cout<<("Anh thua - Em thang");
break;
case 2:
// BUA vs KEO
if(a=='B')
cout<<"Anh thang - E thua";
else
cout<<"Anh thua - Em thang";
break;
case 3:
// BUA vs BAO
if(a=='B')
cout<<"Anh thua - Em thang";
else
cout<<("Anh thang - Em thua");
break;
}
getch();
return 0;
}
Gii thch tng bc lm:
B1: Khai bo 2 bin a,b kiu char nhn 3 k t B O K tng ng vi Ba Bao Ko . Tip
khai bo thm 2 bin c,d kiu int (c i din cho a, d i din cho b) quy c 3 k t B O K
tng ng sang 3 s 1 2 3 cho d tnh ton.

B2: Gi s 2 ngi chi l anh vi em . Nhim v ca bc ny l nhn cc k t t bn phm


vo 2 bin a,b ri da vo quy ra c c vi d
B3: XOR l ton t thao tc trn bit nhng do tnh cht n gin ca bi ton nn ta c th li
dng ton t ny rt ngn bi gii li. Trc ht xin gii thiu v ton t XOR v cch s
dng:
XOR
Cng ging OR, ton t thao tc bit XOR (cn gi l OR c loi tr - exclusive OR) cng l mt
ton t hai ngi, c nhim v thc hin tnh ton (trn tng bit) vi hai chui bit c cng di
to ra mt chui bit mi c cng di vi hai chui bit ban u. Tuy nhin, trn mi cp bit
tng ng nhau ca hai ton hng, ton t XOR s tr v 1 nu ch c mt trong hai bit l 1 (v
bit cn li l 0), ngc li, XOR tr v bit 0.Trong C, C++, Java, C#, ton t thao tc bit XOR
c biu din bng k hiu "^" (du m) V d:
0101
^
0011
--------0110
i! Ci ny mt nhc u lm, trnh mi hc cha dm ngh n.n gin ch cn hiu nh
th ny: 2 chui bit trn c cng di, ta xp chng li song song vi nhau sau so snh s
trn v di c ging nhau th kt qu di in s 0, khc nhau th in s 1 .
By gi lin quan n bi ton ca chng ta: c v d ch c th nhn 1 trong 3 gi tr l 1, 2 v 3
tng ng trong h nh phn l 01, 10 v 11 . Ta thc hin c^d ( c xor d ) ngha l thc hin
php ton XOR chng trong h nh phn. Lm ci v d cho d hiu:
Gi s c=1; d=2
01
^
10
-------------11 -----> s 3 trong h thp phn
Gi s c=3; d=1
11
^
5

01
-------------10 ------> s 2 trong h thp phn
Nu 2 s ging nhau th tt nhin tr v 00 tc l s 0. H h v cng hng hiu ti sao trong
phm vi 1 n 3 th c 2 s khc nhau th tr v s cn li. Khng bit ti y cn ai cha hiu
na nh
B4: Bc cn li th n gin, n tr v s no th ta bit k t tng ng vi s Anh v Em
u khng on ra, ta dng If gii quyt ngon phn cn li .
Bi 16:
#include <iostream> using namespace std;
#include <conio>
int main() {
const int luongcb=650;
int tnct;
double heso,luong;
cout<<" Cho biet tham nien cong tac \n";
cin>>tnct;
if (tnct < 12) heso = 1.92;
else if (tnct < 36) heso = 2.34;
else if (tnct < 60) heso = 3;
else heso = 4.5;
luong=luongcb*heso;
cout<<"Luong = "<<luong<<"000 ngan dong";
getch();
return 0;
}
Bi 17:
#include <iostream> using namespace std;
#include <conio>
int main() {
int giobd,giokt,thoigian,tien;
do {
cout<<"Nhap gio bat dau \n";
cin>>giobd;
cout<<"Nhap gio ket thuc \n";
cin>>giokt;
6

} while((giobd < 8)||(giokt > 24)||(giobd > giokt));


thoigian=giokt-giobd;
if (thoigian > 3)
tien = 3 * 30000 + (thoigian - 3) * 30000 * 0.7;
else tien = thoigian * 30000;
if (giokt <= 17)
tien *= 0.9;
cout<<"So tien la "<<tien<<" ngan dong";
getch();
return 0;
}
Bi 18:
#include <iostream> using namespace std;
#include <conio>
int main() {
int mth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int ngay,thang,nam;
cout <<"Nhap ngay, thang, nam: \n";
cin >> ngay >> thang >> nam;
if (((nam%4==0)&&(nam%100!=0))||(nam%400==0))
mth[1]++;
if ((ngay>0)&&(ngay<=mth[thang-1])&&(thang>0)&&(thang<13)&&(nam>0))
{
if ((thang==1)||(thang==2)||(thang==3))
cout<<"Thang "<<thang<<" thuoc quy I \n";
else if ((thang==4)||(thang==5)||(thang==6))
cout<<"Thang "<<thang<<" thuoc quy II \n";
else if ((thang==7)||(thang==8)||(thang==9))
cout<<"Thang "<<thang<<" thuoc quy III \n";
else cout<<"Thang "<<thang<<" thuoc quy IV \n";
cout<<"Thang "<<thang<<" co "<<mth[thang-1]<<" ngay \n";
if (ngay==mth[thang-1]) cout<<"Ngay hom sau la ngay 1 \n";
else cout<<"Ngay hom sau la ngay "<< ngay+1 <<"\n";
if (ngay==1) cout<<"Ngay hom truoc la ngay "<<mth[thang];
else cout<<"Ngay hom truoc la ngay "<<ngay-1;
}
else cout << "Ngay thang ban nhap khong hop le";
getch();

return 0;
}
Bi 19:
#include <iostream> using namespace std;
#include <conio>
int main() {
int a[3],i,j,t;
cout<<"Nhap 3 so \n";
cin>>a[0]>>a[1]>>a[2];
for(i=0;i<2;i++)
for(j=i+1;j<3;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<<"Max= "<<a[2]<<endl;
cout<<"Min= "<<a[0];
getch();
return 0;
}
Bi 20:
#include <iostream> using namespace std;
#include <conio>
int main() {
int a[4],i,j,t;
cout<<"Nhap 4 so \n";
cin>>a[0]>>a[1]>>a[2]>>a[3];
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<<"Max= "<<a[3]<<endl;
8

cout<<"Min= "<<a[0];
getch();
return 0;
}
Bi 22:
#include <iostream> using namespace std;
#include <conio>
int main() {
double a,b;
do {
cout<<"Nhap 2 so \n";
cin>>a>>b;
} while (a==0);
if (a>0) cout<<"Nghiem: x > "<<-b/a;
else cout<<"Nghiem: x < "<<-b/a;
getch();
return 0;
}
Bi 23:
#include <conio>
#include <math>
int main() {
double a,b,c,d;
do {
cout<<"Nhap tu va mau phan so 1 \n";
cin>>a>>b;
} while (b==0);
do {
cout<<"Nhap tu va mau phan so 2 \n";
cin>>c>>d;
} while (d==0);
cout<<"Tong = "<<(a/b+c/d)<<endl;
cout<<"Hieu = "<<abs(a/b-c/d)<<endl;
cout<<"Tich = "<<(a/b*c/d)<<endl;
if (c!=0) cout<<"Thuong = "<<((a/b)/(c/d));
else cout<<"Thuong khong tinh duoc.";
getch();

return 0;
}
Bi 24:
#include <iostream> using namespace std;
#include <conio>
int main() {
char a;
int b;
cout<<"Nhap ki tu \n";
cin>>a;
b=int(a);
if ((b>=48)&&(b<=57)) cout<<"La ki tu so";
else if ((b>=65)&&(b<=90)) cout<<"La ki tu chu in hoa";
else if ((b>=97)&&(b<=122))
cout<<"La ki tu chu thuong";
else cout<<"La ki tu dac biet";
getch();
return 0;
}
Bi 25:
#include <iostream> using namespace std;
#include <conio>
int main() {
unsigned int a;
long st;
cout<<"Nhap luong dien tieu thu (kWh) \n";
cin>>a;
if (a<=100) st=a*550;
else if ((a>100)&&(a<=150)) st=100*550+(a-100)*900;
else if ((a>150)&&(a<=200)) st=100*550+50*900+(a-150)*1250;
else if ((a>200)&&(a<=300))
st=100*550+50*900+50*1250+(a-200)*1450;
else st=100*550+50*900+50*1250+100*1450+(a-300)*1700;
cout<<"So tien phai tra la "<<st*1.1<<" VND.";
getch();
return 0;
}

10

Bi 26:
#include <iostream> using namespace std;
#include <conio>
int main() {
unsigned int MS;
int X,Y,t;
do {
cout<<"Nhap ma so nhan vien \n";
cin>>MS;
} while (MS>4);
if (MS==1) {
cout<<"Nhap khoan luong co dinh X \n";
cin>>X;
cout<<"Luong cho nha quan li la "<<X<<" VND.";
}
else if (MS==2) {
cout<<"Nhap khoan luong co ban Y \n";
cin>>Y;
cout<<"Nhap so h lam duoc trong tuan \n";
cin>>t;
if (t<=40) X=40*Y;
else X=(t-40)*1.5*Y+40*Y;
cout<<"Luong cho cong nhan lam theo gio la "<<X<<" VND.";
}
else if (MS==3) {
cout<<"Nhap tri gia doanh so Z \n";
cin>>Y;
cout<<"Luong cong nhan theo loi nhuan la "<<(500000+0.7*Y)<<" VND.";
}
else if (MS==4) {
cout<<"Nhap so N san pham lam ra trong tuan \n";
cin>>X;
cout<<"Nhap so tien S tra cho moi san pham \n";
cin>>Y;
cout<<"Luong cong nhan theo san pham la "<<X*Y<<" VND.";
}
getch();
return 0;
}

11

Bi 27:
#include <iostream> using namespace std;
#include <conio>
#include <stdlib>
const char* chu[10] = {"khong", "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin"};
int main() {
int a,hangchuc,hangdonvi;
cout<<"Nhap so nguyen 2 chu so \n";
cin>>a;
hangchuc = a/10;
hangdonvi = a - hangchuc*10;
if (a==10) cout<<"muoi";
else if (a<20) cout<<"muoi "<<chu[hangdonvi];
else cout<<chu[hangchuc]<<" muoi "<<chu[hangdonvi];
getch();
return 0;
}

Bi 29:
#include <iostream>
using namespace std;
int main()
{
int gt=1,n;
cout<<"Nhap n=";
cin>>n;
for(int i = (n % 2)? 1 : 2; i <= n; i += 2) gt *= i;
cout<<n<<"!!= "<<gt<<endl;
return 0;
}
Bi 30:
#include <iostream> using namespace std;
#include <conio>
int main() {
int n,i;
long int S1=0,S2=0;
long double S3=1,S4=0;
12

cout<<"Nhap so nguyen n \n";


cin>>n;
for(i=1;i<=n;i++)
{
S1+=i; S3*=i; S4+=(1/((i+1)*(i+2)));
}
for (i=1;i<2*n+1;i+=2)
S2+=i;
cout<<S1<<endl<<S2<<endl<<S3<<endl<<S4;
getch();
return 0;
}
Bi 31:
#include <iostream> using namespace std;
#include <conio>
int main() {
int dem = 0;
for (int i = 1; i <= 100; i++)
{
if( (i % 3 ==0) || (i % 7 == 0))
{
dem++;
}
}
cout<<dem;
getch();
return 0;
}
Bi 32:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, ngto;
ngto = 1;
cout << "Nhap gia tri n: ";
cin >> n;
13

for (int i=2; i < n; i++)


{
if (n%i == 0)
{
ngto = 0;
break;
}
}
if (ngto == 1)
cout << "\n So "<< n << " la so nguyen to.";
else
cout << "\n So " << n << " khong phai la so nguyen to.";
return 0;
}
Bi 38:
#include <iostream>
using namespace std;
int UCLN(int, int);
void main()
{
int a,b,u ;
cout<<"Nhap 2 so a,b : ";
cin>>a>>b;
u=UCLN(a,b);
int BCNN=(a*b)/u;
cout<<"Uoc chung lon nhat cua "<<a<<" & "<<b<<" la "<<u<<endl;
cout<<"Boi chung nho nhat cua "<<a<<" & "<<b<<" la "<<BCNN<<endl;
}
int UCLN(int a, int b)
{
while (a!=b)
{
if (a>b)
a=a-b;
else b=b-a;
}
return a;
}
14

Bi 39:
#include <iostream>
using namespace std;
void main()
{
for(int i=33;i<=255;i++)
cout<<i<<" : "<<(char) i<<"\n";
}
Bi 40:
#include <iostream>
using namespace std;
void main()
{
long tien,t500=0,t200=0,t100=0,t50=0,t20=0,t10=0,t5=0,t2=0,t1=0;
cout<<"Nhap so tien can doi : ";
cin>>tien;
if (tien>=500000)
{
t500=tien/500000;
tien=tien-t500*500000;
}
if (tien>=200000)
{
t200=tien/200000;
tien=tien-t200*200000;
}
if (tien>=100000)
{
t100=tien/100000;
tien=tien-t100*100000;
}
if (tien>=50000)
{
t50=tien/50000;
tien=tien-t50*50000;
}
if (tien>=20000)
{
15

t20=tien/20000;
tien=tien-t20*20000;
}
if (tien>=10000)
{
t10=tien/10000;
tien=tien-t10*10000;
}
if (tien>=5000)
{
t5=tien/5000;
tien=tien-t5*5000;
}
if (tien>=2000)
{
t2=tien/2000;
tien=tien-t2*2000;
}
if (tien>=1000)
{
t1=tien/1000;
tien=tien-t1*1000;
}
cout<<"Ban doi duoc \n"
<<t500<<" To 500k \n "
<<t200<<" To 200k \n "
<<t100<<" To 100k \n "
<<t50<<" To 50k \n "
<<t20<<" To 20k \n "
<<t10<<" To 10k \n "
<<t5<<" To 5k \n "
<<t2<<" To 2k \n "
<<t1<<" To 1k \n ";
}
Bi 53:
#include <iostream>
using namespace std;
bool ktNgTo(int );
16

void main()
{
int n;
cout<<"n= ";
cin>>n;
for (int i=2;i<=n;i++)
if (ktNgTo(i)) cout<<i<<" ";
}
bool ktNgTo(int n)
{
bool nt=true;
for (int i=2;i<n;i++)
{
if (n%i==0)
{
nt=false;
break;
}
}
////////////////////////////////
Max n s
# include <iostream>
using namespace std;
void main()
{
int day[200];
int sophantu;
do
{
cout<<"Nhap so phan tu cua mang ";
cin>>sophantu;
}
while ((sophantu<=0)|| (sophantu>200));
for (int i=1; i<=sophantu;i++)
{
cout<<"Nhap phan tu thu "<<i<<"= ";
17

cin>>day[i];
}
int max=day[1];
for (int i=1; i<=sophantu;i++)
{
if (max<day[i])
max = day[i];
}
cout<<max<<" la so lon nhat trong "<<sophantu<<" so da nhap \n";
}
///////////////////////////////////
V tam gic full
#include <iostream>
using namespace std;

void tamgiacrong(int);
void tamgiacrongnguoc(int) ;
void tamgiacdac(int);
void tamgiacdacnguoc(int);
void main()
{
int n;
cout<<"Nhap chieu cao tam giac : ";
cin>>n;
cout<<"--------Tam giac dac ------\n";
tamgiacdac(n);
cout<<"--------Tam giac dac nguoc ------\n";
tamgiacdacnguoc(n);
cout<<"--------Tam giac rong ------\n";
tamgiacrong(n);
cout<<endl;
cout<<"--------Tam giac rong nguoc ------\n";
tamgiacrongnguoc(n);

}
18

void tamgiacdac(int n)
{
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n-i;j++)
cout<<" ";
for (int j=1;j<=2*i-1;j++)
cout<<"*";
cout<<"\n";
}
}

void tamgiacdacnguoc(int n)
{
for (int i=n;i>=1;i--)
{
for (int j=1;j<=n-i;j++)
cout<<" ";
for (int j=1;j<=2*i-1;j++)
cout<<"*";
cout<<"\n";
}
}
void tamgiacrong(int n)
{
for (int i=1;i<=n-1;i++)
{
for (int j=1;j<=n-i;j++)
cout<<" ";
cout<<"*";
if (i>1)
{
for (int j=1;j<=2*i-3;j++)
cout<<" ";
cout<<"*";
}

19

cout<<"\n";
}
for (int i=1;i<=2*n-1;i++)
cout<<"*";
}
void tamgiacrongnguoc(int n)
{
for (int i=1;i<=2*n-1;i++)
cout<<"*";
cout<<"\n";
for (int i=n-1;i>=1;i--)
{
for (int j=1;j<=n-i;j++)
cout<<" ";
cout<<"*";
if (i>1)
{
for (int j=1;j<=2*i-3;j++)
cout<<" ";
cout<<"*";
}
cout<<"\n";
}
}
Bi 41:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;
void nguoivsmay();
void mayvsnguoi();
void game();
void choitiep();
void win();
void lose();
20

void main()
{
system("cls");
game();
}
void nguoivsmay()
{
srand((unsigned)time(NULL));
int may=rand()%100;
bool dung=false;
int nguoichoi;
cout<<"Ban co 7 lan doan!!! CO LEN \n";
for (int i=1;i<=7;i++)
{
cout<<"-------------Lan doan thu "<<i<<"/7------------------------\n";
cout<<"Nhap so ban doan nao : ";
cin>>nguoichoi;
if (may>nguoichoi) cout<<"KO DUNG !!! .... So ban chon NHO QUA\n ";
if (may<nguoichoi) cout<<"KO DUNG !!! .... So ban chon LON QUA\n";
if (may==nguoichoi)
{
dung=true;
win() ;
break;
}
cout<<"-------------------------------------\n";
}
if (dung==false)
lose();
choitiep();
}
void mayvsnguoi()
{
bool dung=false;
srand((unsigned)time(NULL));
21

int nguoichoi,solan,may;
cout<<"Nhap so ban muon may doan ";
cin>>nguoichoi;
cout<<"Nhap so lan gioi han : ";
cin>>solan;
for (int i=1;i<=solan;i++)
{
may=rand()%100;
cout<<"Lan doan thu "<<setw(3)<<i<<" : May doan so "<<may<<endl;
if (may==nguoichoi)
{
dung=true;
lose();
break;
}
}
if (dung==false) win();
choitiep();
}
void game()
{
system("cls");
int chon;
cout<<"------------------ Rex Riddle -----------------------\n";
cout<<"******************************************************\n"
cout<<"************** TRO CHOI DOAN SO *******************\n"
cout<<"******************************************************\n"
cout<<endl;
cout<<"Vui long chon tro choi ^^ \n";
cout<<"1. Nguoi vs may ! \n";
cout<<"2. May vs nguoi ! \n";
cout<<"3. Thoat \n";
do
{

;
;
;

cin>>chon;
22

if ((chon<1)||(chon>3))
game();
}
while ((chon!=1)&&(chon!=2)&&(chon!=3));
system("cls");
if (chon==1) nguoivsmay();
if (chon==2) mayvsnguoi();
}

void win()
{
cout<<endl;
cout<<endl;
cout<<" ****
**** ****
*** ***\n";
cout<<" ***
*** ******** *** *** \n";
cout<<"
********** *** *** *** *** \n";
cout<<"
****
*** *** *** *** \n";
cout<<"
****
*** *** *** *** \n";
cout<<"
****
******** ********** \n";
cout<<"
****
****
********
\n";
cout<<endl;
cout<<" ***
******
*** **** ****** ***\n";
cout<<" *** *** *** *** **** *** *** ***\n";
cout<<" *** *** *** *** **** *** *** ***\n";
cout<<" *** ***
*** *** **** *** *** ***\n";
cout<<" ****
****
**** *** *******\n";
cout<<" ****
****
**** *** ******\n";
}

void lose()
{
cout<<endl;
cout<<endl;
cout<<" ****

****

****

***

***\n";
23

cout<<" ***
*** ******** *** *** \n";
cout<<"
********** *** *** *** *** \n";
cout<<"
****
*** *** *** *** \n";
cout<<"
****
*** *** *** *** \n";
cout<<"
****
******** ********** \n";
cout<<"
****
****
********
LOSE\n";
cout<<endl;
}

void choitiep()
{
char choitiep;
cout<<"Ban co muon choi tiep ko ?? (C/K) ";
cin>>choitiep;
if ((choitiep=='C')||(choitiep=='c')) main();
}
[i][i]
/////////////////////////////////////
on code trn c mt ci mi v phn to s ngu nhin....
Nhng tnh hung khng th d on trc c s lm nn s hp dn cho
game. Chng hn, s thay i chin thut bt ng ca i th trong game
dn trn, hoc s xut hin bt ng ca mt con qui vt trong action
game. To nn mt con s ngu nhin l mt k thut c bn ca dng ny.
Gii thiu chng trnh Die Roller: ( xc xc)
Chng trnh Die Roller ti hin li vic mt con xc xc c su mt. My tnh s tnh ton
mt no s xut hin mt cch ngu nhin. Hnh 2.11 cho thy kt qu ca chng trnh:

Hnh 2.11: Chng trnh to ra mt con s ngu nhin.


Gi hm rand():

24

Mt trong nhng iu ti lm u tin l include file mi:


Code:
#include
File cstdlib cha nhng hm tng tc vi con s ngu nhin. V ti include n, ti c php
gi hm thuc file ny, c th l hm rand(), l nhng g ti lm hm main():
Code:
int randomNumber = rand(); //to mt con s ngu nhin
Nh bn hc Chng 1, hm l mt on code c th lm vic g ,
sau tr li mt gi tr. Bn gi hm bng cch s dng tn n, sau
l hai du ngoc
n, (hyutars: bn trong hai du ngoc n c th c cc i). Nu hm
tr v mt gi tr, bn c th gn gi tr cho mt bin. Ti s dng
mt cu lnh gn, gn gi tr tr v ca hm rand() (mt con s ngu
nhin) cho bin randomNumber.
Lu : Hm rand() to ra
mt con s ngu nhin t 0 n t nht l 32767. Ti khng th ni
trc gi tr ln nht do hm rand() to ra v n ph thuc vo s b
sung ca bn trong C++ (nguyn vn: depends on your implementation of
C++). Gi tr ln nht c lu gi trong hng s RAND_MAX, c nh
ngha trong file cstdlib. Cho nn nu bn mun bit gi tr ln nht
hm rand() c th to ra, ch cn cout RAND_MAX.
Hm cn c th ly cc gi tr t bn ngoi vo s
dng. Bn cung cp cc gi tr cho hm bng cch t chng gia
hai du ngoc n, tch bit cc gi tr bi du phy. Nhng gi tr
c gi l i s, v khi , bn trao quyn s dng chng cho
hm. Ti khng gi tr no hm rand() v hm khng cn s dng
i s no c.
Nhn t to ra s ngu nhin: (Seeding the Random Number Generator)
Hm rand() to ra mt s gi ngu nhin (khng phi l s ngu nhin
tht) da vo mt cng thc. hiu vn ny ta c tng tng
rand() c mt cun sch ln m ni dung ca n l
cc s ngu nhin. Nhng rand() lun lun bt u ti trang u ca
cun sch lc chng trnh chy. iu c ngha l rand() lun cho ra
nhng s ging nhau mi khi chng trnh chy. (hyutars: bn c th
25

kim chng iu ny bng cch b hm srand i)


Bn c th sa li v tr bt u ca rand() trong cun sch bng cch
dng hm srand() (cng c nh ngha trong cstdlib). S gia hai
du ngoc n hm srand() l nhn t to
ra s ngu nhin, v chng ta c nhng s ngu nhin thc s, nhn
t phi l mt con s khc nhau mi khi chng trnh chy. Cch tt
nht l s dng hm time() (c nh ngha trong ctime), n s tr v
mt con s da vo thi gian hin hnh.
c th s dng hm time(), ti include file ctime u chng trnh:
Code:
#include
Sau , trong hm main(), ti to ra s ngu nhin da vo thi gian hin ti:
Code:
srand(time(0)); // seed random number generator based on current time
Trong on code trn, ti dng hm time(0) nh l mt i s ca hm srand(). Ngha l gi tr
tr v ca hm time(0) s c s dng bi hm srand(). Tng qut, bn c th dng hm ny
lm i s cho hm kia, min sao gi tr tr v ca hm lm i s phi hp l.
Trong hm time(0), ti t i s l 0 vo. time(0) s tr v mt
gi tr da vo thi gian hin hnh, sau ti a gi tr cho hm
srand() -> to ra mt s thc s ngu nhin.
Thu hp vng to ra s ngu nhin:
Sau khi to ra mt s ngu nhin, bin randomNumber gi mt gi tr t 0 n 32 767. Nhng
ti mun s phi t 1 n 6 thi(ang chi tr xc xc m), do ti dng cu lnh ny
thu hp phm vi li:
Code:
int die = (randomNumber % 6) + 1; // get a number between 1 and 6
Tt c nhng s dng khi chia cho 6 u c s
d t 0 n 5. Trong cu lnh trn, ti ly s d v cng thm 1, phm
vi ca bin die by gi s l 1 n 6 ng nh iu chng ta mong
mun. Bn c th dng k thut ny iu chnh phm vi xut hin ca
s ngu nhin.
By: Dng ton t modulus (chia ly d) iu chnh
phm vi xut hin ca mt s ngu nhin khng phi lc no cng ng
tuyt i. S c nhng con s xut hin nhiu hn so vi cc con s
26

khc. Nhng d th no i na, y khng phi l vn i vi mt


game n gin.
/////////////////////////////////
Tm li ton b l mun to 1 s ngu nhin ko trng nhau
S dng lnh
Code:
srand((unsigned)time(NULL));
S cn to ngu nhin =rand()%(khong gii hn);
Nh phi thm 2 th vin
Code:
#include <cstdlib>
#include <ctime>
Code:
srand((unsigned)time(NULL));
n =rand()%(100);

27

You might also like