Professional Documents
Culture Documents
CPP05
CPP05
CPP05
5
#include <iostream>
#include <cmath>
using namespace std;
const double PI = atan(1) * 4;
int main()
{
double d;
cout << "Cho duong kinh: ";
cin >> d;
cout << "Dien tich = " << PI * d * d / 4;
}
6
Cấ u trú c tuầ n tự
S1 S1;, S2;, …, Sn;: Lệnh
;
Khi viết cá c lệnh liên tiếp chương trình sẽ thự c
S2
hiện lầ n lượ t cá c lệnh theo đú ng thứ tự đó .
;
…
Sn
;
7
Diện tích tam giá c
Nhậ p và o 3 số thự c , , là độ dà i 3 cạ nh củ a mộ t
tam giá c, tính diện tích tam giá c đó
Cô ng thứ c Heron…
8
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b, c, p, s;
cout << "Cho ba canh: ";
cin >> a >> b >> c;
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));
cout << "Dien tich = " << s;
}
9
Lệnh ghép
{ Có nhữ ng nơi trong chương trình khô ng cho phép viết
nhiều hơn 1 lệnh, khi đó để thự c hiện nhiều lệnh, cầ n
S1; phả i “gó i” chú ng thà nh mộ t lệnh ghép
Lệnh ghép bắ t đầ u bằ ng “{”, kết thú c bằ ng “}”, giữ a
khố i là cá c lệnh thà nh phầ n tuâ n theo cấ u trú c tuầ n tự
S2;
Sau dấ u đó ng ngoặ c nhọ n khô ng cầ n dấ u “;” do C++ tự
…
biết đây là nơi kết thú c lệnh
10
Lệnh chọ n if
if (C) C: Điều kiện (Biểu thứ c logic)
S; S;: Mộ t lệnh, nếu muố n thự c hiện nhiều lệnh,
cầ n gó i chú ng và o thà nh lệnh ghép {}
Khi gặ p cấ u trú c if, máy sẽ kiểm tra điều kiện
C:
C = true, máy sẽ thự c hiện lệnh S;
C = false, máy khô ng thự c hiện lệnh S;
11
Lệnh chọ n if…else…
if (C) C: Điều kiện (Biểu thứ c logic)
S1; S1;, S2;: Mộ t lệnh, nếu muố n thự c hiện nhiều lệnh, cầ n gó i
chú ng và o thà nh lệnh ghép {}
else Khi gặ p cấ u trú c if…else…, máy sẽ kiểm tra điều kiện C:
S2; C = true, máy thự c hiện lệnh S1;
C = false, máy thự c hiện lệnh S2;
12
Giả i phương trình bậ c 2
Nhậ p và o 3 số thự c () và giả i phương trình:
Mô tả thuậ t toá n bằ ng ngô n ngữ tự nhiên
Chuyển ngô n ngữ tự nhiên thà nh chương trình
C++
13
Giả i phương trình bậ c 2
Nhậ p , và .
Tính
Nếu , thô ng bá o phương trình vô nghiệm
Nếu khô ng…
Nếu , đưa ra nghiệm kép
Nếu khô ng, thô ng bá o 2 nghiệm
14
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b, c, delta;
cout << "Cho a, b, c: "; cin >> a >> b >> c;
delta = b * b - 4 * a * c;
if (delta < 0) cout << "Vo nghiem!";
else
if (delta == 0) cout << "Nghiem kep x = " << -b / (2 * a);
else
{
cout << "x1 = " << (-b - sqrt(delta)) / (2 * a) << '\n';
cout << "x2 = " << (-b + sqrt(delta)) / (2 * a);
}
}
15
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b, c, delta;
cout << "Cho a, b, c: "; cin >> a >> b >> c;
delta = b * b - 4 * a * c;
if (delta < 0) cout << "Vo nghiem!";
else
if (delta == 0) cout << "Nghiem kep x = " << -b / (2 * a);
else
cout << "x1 = " << (-b - sqrt(delta)) / (2 * a) << '\n'
<< "x2 = " << (-b + sqrt(delta)) / (2 * a);
}
16
Nhiều cấ u trú c if…else lồ ng nhau
Nhậ p và o số nguyên
Nếu là số chính phương thì thô ng bá o là số chính phương
Nếu là số â m thì thô ng bá o là số â m
Kiểm tra số là số chính phương:
Hoặ c
17
Chỉ ra chỗ sai
#include int main()
{
<iostream> int n;
cin >> n;
#include if (n >= 0)
<cmath> if (int(sqrt(n)) == sqrt(n))
cout << n << " la so chinh
using phuong";
namespace else
cout << n << " la so am";
std; }
18
Chữ a lỗ i
#include
int main()
{
<iostream> int n;
cin >> n;
#include if (n >= 0)
{
<cmath> if (int(sqrt(n)) == sqrt(n))
using }
cout << n << " la so chinh phuong";
namespace else
cout << n << " la so am";
std; }
19
Lệnh chọ n switch
switch(e)
{
e: Biểu thứ c kiểu đếm đượ c (số nguyên, ký tự , logic)
case k1: ki: hằ ng cù ng kiểu vớ i e
GS1; break;
case k2:
GSi: Mộ t nhó m lệnh
GS2; break; Khi gặ p lệnh switch, máy tính giá trị biểu thứ c e…
…
Nếu giá trị e bằ ng ki, máy sẽ thự c hiện nhó m lệnh GSi.
case kn:
GSn; break; Nếu giá trị e khô ng thuộ c nhó m hằ ng nà o, máy thự c hiện
default: nhó m lệnh GDefault, nếu khô ng có phầ n GDefault, máy bỏ qua.
GDefault;
break: Từ khó a củ a C++
}
20
Nă m can chi
10 can: Giá p, Ấ t, Bính, Đinh, Mậ u, Kỷ, Canh, Tâ n, Nhâ m, Quý
12 chi: Tí, Sử u, Dầ n, Mã o, Thìn, Tị, Ngọ , Mù i, Thâ n, Dậ u,
Tuấ t, Hợ i
Xá c định nă m can chi ứ ng vớ i nă m dương lịch
2000 = Canh Thìn
2015 = Ấ t Mù i
21
Giá p Ất Bính Tí Sử u Dầ n Mã o
Nhâ m Mậ u Tuấ t Tỵ
2019
2018
2017
2016
22
Nă m can chi
Nhậ p và o mộ t nă m y (dương lịch)
Xá c định nă m can chi tương ứ ng
y % 10 4 5 6 7 8 9 0 1 2 3
Can Giá p Ất Bính Đinh Mậ u Kỷ Canh Tâ n Nhâ m Quý
y % 12 4 5 6 7 8 9 10 11 0 1 2 3
Chi Tí Sử u Dầ n Mã o Thìn Tỵ Ngọ Mù i Thâ n Dậ u Tuấ t Hợ i
23
#include <iostream> switch (y % 12)
using namespace std; {
int main() case 4: cout << "Ti"; break;
{
case 5: cout << "Suu"; break;
int y;
case 6: cout << "Dan"; break;
cout << "Year: "; cin >> y;
switch (y % 10) case 7: cout << "Mao"; break;
{ case 8: cout << "Thin"; break;
case 4: cout << "Giap "; break; case 9: cout << "Ty"; break;
case 5: cout << "At "; break; case 10: cout << "Ngo"; break;
case 6: cout << "Binh "; break; case 11: cout << "Mui"; break;
case 7: cout << "Dinh "; break; case 0: cout << "Than"; break;
case 8: cout << "Mau "; break; case 1: cout << "Dau"; break;
case 9: cout << "Ky "; break;
case 2: cout << "Tuat"; break;
case 0: cout << "Canh "; break;
case 3: cout << "Hoi"; break;
case 1: cout << "Tan "; break;
case 2: cout << "Nham "; break; }
case 3: cout << "Quy "; break; }
}
24
Tính thứ trong tuầ n
Nhậ p và o ngày (d), thá ng (m), nă m(y)
Cho biết ngày d/m/y là thứ mấy?
Cô ng thứ c Zeller…
25
Thá ng 1 và 2 coi như thá ng 13 và 14 nă m trướ c if (m < 3)
18/2/2010 = 18/14/2009 {
Mỗ i thế kỷ gồ m 100 nă m, cá c nă m trong thế kỷ m += 12;
đá nh số từ 0 tớ i 99: Thế kỷ 0: [0…99], Thế kỷ 1: --y;
[100…199], …, Thế kỷ 20: [2000, 2099] }
: Số hiệu thế kỷ c = y / 100;
: Số hiệu nă m trong thế kỷ k = y % 100;
26
#include <iostream> dow =
d +
using namespace std; 26 * (m + 1) / 10 +
int main() k + k / 4 +
{ c / 4 + 5 * c;
switch(dow % 7)
int d, m, y, c, k, dow; {
cout << "Date? d m y: "; case 0: cout << "Saturday"; break;
case 1: cout << "Sunday"; break;
cin >> d >> m >> y;
case 2: cout << "Monday"; break;
if (m < 3) case 3: cout << "Tuesday"; break;
{ case 4: cout << "Wednesday"; break;
case 5: cout << "Thursday"; break;
m += 12; --y;
case 6: cout << "Friday"; break;
} }
c = y / 100; }
k = y % 100;
27
Lệnh lặ p do…while…
do C: Điều kiện lặ p (Biểu thứ c logic)
S; S;: Mộ t lệnh, nếu muố n thự c hiện nhiều lệnh, phả i
while “gó i” cá c lệnh đó thà nh mộ t lệnh ghép {}
(C); Máy sẽ thự c hiện lệnh S và lặ p lạ i lệnh này chừ ng
nà o điều kiện C đú ng
Lệnh S sẽ đượ c thự c hiện ít nhấ t 1 lầ n (Điều kiện
lặ p C đượ c kiểm tra sau mỗ i lượ t lặ p)
28
Tá ch chữ số
Nhậ p và o mộ t số nguyên dương . Cho biết tổ ng cá c chữ số trong biểu diễn
thậ p phâ n củ a
Ý tưở ng
Khở i tạ o biến
Tá ch từ ng chữ số củ a , từ hà ng đơn vị lên, khi mỗ i chữ số đượ c tá ch ra, tă ng thêm
đơn vị.
Thuậ t toá n
Tá ch chữ số hà ng đơn vị:
Lặ p lạ i vớ i số cho tớ i khi
29
#include <iostream>
cin >> n; using namespace std;
int main()
sum = 0;
{
do int n, d, sum;
cin >> n;
{
sum = 0;
d = n % 10; do
{
n /= 10; d = n % 10;
sum += d; n /= 10;
sum += d;
} }
while (n != 0);
while (n != 0);
cout << sum;
cout << sum; }
30
cin >> n;
sum = 0;
𝑛=¿ 1 2 3 4
do
{ 𝑑=¿
d = n % 10;
n /= 10;
sum += d;
𝑠𝑢𝑚=¿ 0
}
while (n != 0);
do
{ 𝑑=¿
d = n % 10;
n /= 10;
sum += d;
𝑠𝑢𝑚=¿ 0
4
}
while (n != 0);
do
{ 𝑑=¿
d = n % 10;
n /= 10;
sum += d;
𝑠𝑢𝑚=¿ 4
7
}
while (n != 0);
do
{ 𝑑=¿
d = n % 10;
n /= 10;
sum += d;
𝑠𝑢𝑚=¿ 7
9
}
while (n != 0);
do
{ 𝑑=¿
d = n % 10;
n /= 10;
sum += d;
𝑠𝑢𝑚=¿ 10
9
}
while (n != 0);
36
Lệnh lặ p while
while C: Điều kiện lặ p (Biểu thứ c logic)
51
Bả ng số
Nhậ p và o mộ t số nguyên dương . In ra bả ng cá c số nguyên từ 1 tớ i
số trên mộ t dò ng
In từ ng hà ng, mỗ i hà ng in từ trá i qua phả i
Ví dụ
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
52
int i, j, n, c = 0; n = 6
cout << "n = "; 1 2 3 4 5 6
cin >> n; 7 8 9 10 11 12
for (i = 1; i <= n; ++i) 13 14 15 16 17 18
{ 19 20 21 22 23 24
//in ra hàng i 25 26 27 28 29 30
for (j = 1; j <= n; +
31 32 33 34 35 36
+j)
cout << setw(3) <<
++c;
cout << '\n';
} 53
Lệnh nhảy goto
Chọ n mộ t tên nhã n (chẳ ng hạ n lab)
Dù ng nhã n lab và dấ u “:” đá nh dấ u vị trí trướ c mộ t lệnh trong
chương trình.
Lệnh
goto lab;
Khi gặ p lệnh goto, máy sẽ nhảy tớ i vị trí đá nh dấ u trong bở i nhã n
lab và thự c hiện cá c lệnh từ vị trí đó .
54
Tính tổ ng cá c chữ số
Viết chương trình nhậ p và o số nguyên dương
Tính tổ ng cá c chữ số trong biểu diễn thậ p
phâ n củ a
55
Tính tổ ng cá c chữ số
Khở i tạ o biến
Bướ c 1: Tá ch chữ số hà ng đơn vị củ a
Bướ c 3: Cộ ng dồ n và o
Nếu , lặ p lạ i từ bướ c 1
56
int n, d, sum(0); int n, d, sum(0);
cin >> n; cin >> n;
do
lab:
{
d = n % 10;
d = n % 10;
n /= 10;
n /= 10;
sum += d; sum += d;
} if (n > 0) goto
while (n > 0); lab;
cout << sum; cout << sum;
57
Trá nh dù ng lệnh nhảy
Sứ c mạ nh củ a lệnh nhảy: Tấ t cả cá c cấ u trú c tuầ n tự , chọ n, lặ p
đều đượ c dịch thà nh cá c lệnh nhảy trong mã máy
Nhượ c điểm củ a goto: Phá vỡ tính cấ u trú c củ a chương trình
Định lý Bö hm-Jacopini: Mọ i quá trình tính toá n trên máy tính
đều có thể cà i đặ t bằ ng cấ u trú c tuầ n tự , rẽ nhá nh (chọ n) và lặ p
Kết luậ n: Cố gắ ng trá nh dù ng GOTO
58
Lệnh break và continue
Lệnh break;
Khi break đượ c thự c hiện trong mộ t vò ng lặ p, vò ng lặ p đó sẽ ngưng ngay
Bả n chấ t: goto tớ i vị trí sau vò ng lặ p
Lệnh continue;
Khi continue đượ c thự c hiện trong mộ t vò ng lặ p, toà n bộ lệnh trong vò ng
lặ p phía sau continue sẽ bị bỏ qua, nhảy đến vị trí kiểm tra điều kiện lặ p
Bả n chấ t: goto tớ i vị trí kiểm tra điều kiện lặ p
59
Ví dụ
Viết mộ t chương trình lặ p
Cho ngườ i dù ng nhậ p và o hai số nguyên
Nếu và , in ra ướ c số chung lớ n nhấ t củ a chú ng
Nếu , dừ ng chương trình
60
#include <iostream>
using namespace std;
int main()
{
int a, b, r;
do
{
cout << "a, b (0 0 to quit) = "; cin >> a >> b;
if (a == 0 && b== 0) break;
cout << "GCD(" << a << ", " << b << ") = ";
while (b != 0)
{
r = a % b; a = b; b = r;
}
cout << a << endl;
} while (true);
}
61
Ví dụ
Viết mộ t chương trình lặ p
Cho ngườ i dù ng nhậ p và o số thự c
Nếu thô ng bá o dữ liệu sai
Nếu , in ra độ dà i cạ nh hình vuô ng diện tích bằ ng (in
ra )
Nếu , thoá t.
62
double s;
do
{
cout << "s = "; cin >> s;
if (s == 0) break;
if (s < 0)
{
cout << "Wrong number!" << endl;
continue;
}
cout << sqrt(s) << endl;
}
while (true);
63
Khi nà o nên dù ng goto
Lệnh break chỉ dừ ng vò ng lặ p chứ a nó
Nếu có nhiều vò ng lặ p lồ ng nhau và muố n
dừ ng tấ t cả chú ng?
Giả i phá p: goto tớ i vị trí phía sau cá c vò ng lặ p
64
Bả ng số
Nhậ p và o mộ t số nguyên dương và số nguyên dương . In ra bả ng cá c số nguyên
từ 1 tớ i
số trên mộ t dò ng
In từ ng hà ng, mỗ i hà ng in từ trá i qua phả i
Nếu đã in tớ i giá trị thì khô ng đượ c in nữ a
Ví dụ ,
1 2 3 4
5 6 7 8
9 10
65
int i, j, n, L, c = 0;
n, L = 6 20
cout << "n, L = "; cin >> n
>> L; 1 2 3 4
for (i = 1; i <= n; ++i) 5 6
{
for (j = 1; j <= n; ++j) 7 8 9 10
{ 11 12
cout << setw(4) << +
+c;
13 14 15 16
if (c == L) goto 17 18
done;
19 20
}
cout << '\n';
66