2. Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần.
Tính và đưa ra màn hình nhiệt độ trung bình của tuần và số
lượng ngày có nhiệt độ trung bình cao hơn nhiệt độ trung
bình trong tuần?
* D÷ liÖu nhËp vµo (INPUT): t1,t2,t3,t4,t5,t6,t7.
* D÷ cÇn tÝnh vµ in ra (OUTPUT): tb, dem.
Hãy xác định Input,
Output và viết
chương trình giải
bài toán trên ?
Bµi to¸n ®Æt vÊn ®Ò:
3. Program vd1;
Uses crt;
Var
t1,t2,t3,t4,t5,t6,t7,tb : real;
dem : integer;
BEGIN
Clrscr;
write(‘ Nhap vao nhiet do 7 ngay : ’);
readln(t1,t2,t3,t4,t5,t6,t7);
tb : = (t1+t2+t3+t4+t5+t6+t7)/7;
dem : = 0 ;
if (t1>tb) then dem := dem + 1;
if (t2>tb) then dem := dem + 1;
if (t3>tb) then dem := dem + 1;
if (t4>tb) then dem := dem + 1;
if (t5>tb) then dem := dem + 1;
if (t6>tb) then dem := dem + 1;
if (t7>tb) then dem : = dem + 1;
Writeln(‘ Nhiet do trung binh trong tuan = ‘,tb : 6 : 2);
Writeln(‘ so ngay co nhiet do cao hon nhiet do tb ‘, dem);
Readln;
END.
4. Quan sát chương trình,
hãy cho biết nếu muốn
tính nhiệt độ trung bình
của N ngày trong năm
(VD: N=365) thì sẽ gặp
khó khăn gì ?
Khai báo quá lớn
(t1,t2,t3,...,t365) và
chương trình quá
dài (với 365 lệnh
IF) !!!!!
§Ókh¾c phôc khãkh¨ n
®ãtasö dôngkiÓud÷liÖu
m¶ngmét chiÒu.
5. Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu,
được đặt tên và mỗi phần tử có một chỉ số thứ tự.
17 20 18 25 19 12 19A
1 2 3 4 5 6 7
Trong®ã:
Khi thamchiÕu ®Õn phÇn tö thø i ta viÕt A[i].
VÝ dô: A[5] = 19.
Tªn m¶ng : A.
Sè phÇn tö cña m¶ng: 7.
VÝ dô:
KiÓu d÷ liÖu cña c¸c phÇn tö: KiÓu nguyªn.
19
a. Khái niệm
6. b. Khai b¸ o
* C¸ch 1: Khai b¸o gi¸n tiÕp
TYPE <tªn kiÓu m¶ng> = array[<chØ sè ®Çu>..<chØ sè cuèi>] of
<kiÓuphÇn tö>;Var <ds biÕn m¶ng> : <tªn kiÓu m¶ng>;
VÝ dô: TYPE nhietdo = array[1..366] of real;
Var A: nhietdo;
Trong đó : Chỉ số đầu, chỉ số cuối thường là các hằng hoặc biểu thức nguyên;
Chỉ số đầu ≤ chỉ số cuối;
Giữa 2 chỉ số là dấu ..
* C¸ch 2: Khai b¸o trùc tiÕp
Var <Ds biÕn m¶ng> : array[<chØ sè ®Çu>..<chØ sè cuèi>] of
<kiÓuphÇn tö>;
Var A,B : array[1..100] of real;
VÝ dô: Var nhietdo : array[1..366] of real;
7. c. C¸c thao t¸c xö lÝ trong m¶ng mét chiÒu
A
n
1. NhËpsèphÇntö cñam¶ng(n). Write(‘ Nhap vao so ngay:’);
Readln(n);
2. NhËpvµo gi¸ trÞcñac¸c phÇntö
trongm¶ng(A[i]).
For i:=1 to n do
Begin
write(‘nhiet do ngay thu’ ,i, ’ : ’);
readln(A[i]);
end;
.......
CÁC BƯỚC ThÓ hiÖn b»ng pascal
NhËp m¶ng mét chiÒu
víi n = 7
19171921182017
VÝdô: NhËp nhiÖt ®é n
ngµy.
8. In m¶ng mét chiÒu
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do Write(A[i]:5);
Mang vua nhap:
- Th«ngb¸o
- Ingi¸ trÞcñac¸c phÇntö
17 20 18 21 19 17 19
KÕt qu¶ in ra mµn h×nh:
VÝdô: In m¶ng võa nhËp.
9. * Đếm các phần tử trong mảng thoả mãn điều kiện cho trước
dem :=0;
For i :=1 to n do
IF A[i]>TB then dem:=dem+1;
C¸c thao t¸c xö lÝ kh¸c
VÝdô: §ÕmsèngµycãnhiÖt ®écao
h¬nnhiÖt ®éTBcñatuÇn.
TB = 18.7
Dem=0
7654321i
19171921182017A[i]
0 1 1 2 3 3 4
20 21 19 19
+1 +1 +1+1
10. Programvd1;
Uses crt;
Var
A: Array[1..366] of integer;
i,n,dem: integer;
S,TB: real ;
BEGIN
Clrscr;
write(‘ Nhap vao so ngay : ’) ;
readln(n) ;
S := 0 ;
For i := 1 to n do
Begin
write(‘ Nhap nhiet do ngay thu ‘,i,’ : ‘) ;
readln(A[i]) ;
S:=S+A[i] ;
End;
TB:= S/n ; dem:= 0 ;
For i := 1 to n do
If A[i]>TB Then dem:= dem+1;
Writeln(‘ Nhiet do trung binh ’ ,n,’ ngay = ‘,TB: 6 : 2) ;
Writeln(‘ So ngay co nhiet do cao hon nhiet do TBla: ‘, dem) ;
Readln ;
END.
Khai b¸o m¶ng 1chiÒu
NhËpm¶ng1chiÒu
TÝnhtæng
§ÕmsèphÇntö tho¶
m·n®iÒukiÖn
11. Nhap vao so ngay : 7
Nhap nhiet do ngay thu 1 : 17
Nhap nhiet do ngay thu 2 : 20
Nhap nhiet do ngay thu 3 : 18
Nhap nhiet do ngay thu 4 : 21
Nhap nhiet do ngay thu 5 : 19
Nhap nhiet do ngay thu 6 : 17
Nhap nhiet do ngay thu 7 : 19
Nhiet do trung binh 7 ngay = 18.70
So ngay co nhiet do cao hon nhiet do TB la: 4
Chương trình chạy và cho kết quả như sau:
12. Thông thường, các thao tác xử lí trong mảng một chiều đều
dùng câu lệnh FOR...DO.
* Tính tổng các phần tử trong mảng thoả mãn điều kiện cho trước
VÝ dô: TÝnh tæng c¸c phÇn tö trong
m¶ngchiahÕt cho 3.
S :=0;
For i :=1 to n do
IF A[i] mod 3 = 0 then S:=S+A[i];
19121825162015
S = 45
14. Cho các bài toán sau: Xác định bài toán nên sử
dụng kiểu mảng một chiều.
Bài 1: Cho dãy số nguyên A gồm 100 phần tử.
Đếm số lượng số chẵn trong dãy.
Bài 2: Nhập số nguyên N và kiểm tra tính nguyên
tố của N
Bài 3: Cho số nguyên N (N<=200), nhập dãy số
nguyên A1..AN. Đưa ra màn hình giá trị lớn nhất của
dãy.
Bài 4: Nhập 2 số nguyên N1, N2 từ bàn phím. Đưa
ra màn hình ước chung lớn nhất của 3 số.