MẢNG MỘT CHIỀU... MẢNG MỘT CHIỀU..[r]
(1)C
ov
y
–
kh
ôn
g
là
g
ì
Bµi 11
MNG MT CHIU Tit 1
Giáo án điện tử tin häc líp 11
Giáo viên: Phan Đình Trung
(2)Nhập vào nhiệt độ (trung bình) ngày tuần Tính đ ưa màn hình nhiệt độ trung bình tuần số lượng ngày có nhiệt độ TB cao hơn nhit trung bỡnh tun?
* Dữ liệu nhập vào (INPUT): t1,t2,t3,t4,t5,t6,t7. * Dữ cần tính in (OUTPUT): tb, dem.
Hãy xác định Input,
Output viết chương trình giải
bài tốn?
Bài toán đặt vấn đề:
(3)Progran Nhietdo;
Uses Crt;
Var: t1, t2, t3, t4, t5, t6, t7, tb: real; dem: Integer;
Begin
Clrscr;
Writeln(‘Nhap vao nhiet cac tuan:’); 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 trung binh tuan:’, tb:6:2);
Writeln(‘So nhiet lon nhiet tb tuan’, dem:6); Readln;
(4)Quan sát ch ơng trình, hÃy cho biÕt nÕu muèn tÝnh nhiÖt
độ trung bình N ngày năm (VD: N=365) thỡ s gp khú
khăn ?
Khai báo lớn (t1,t2,t3, ,t365) ch ơng trình dài (với 365 lệnh
IF) !!!!!
(5)M¶ng mét chiỊu dÃy hữu hạn phần tử kiểu
23 20 24 27 19 22 19
A
4 5 6 7
Trong :
Khi tham chiếu đến phần tử thứ i ta viết A[i].
Ví dụ: A[5] = 18
Tên mảng : A.
Số phần tử mảng: 7.
Ví dụ:
Kiểu liệu phần tử: Kiểu nguyên.
18
1 Khái niệm
(6)2 Khai báo mảng chiều PASCAL
* C¸ch 1: Khai b¸o gi¸n tiÕp
TYPE <tên kiểu mảng> = array[<chỉ số đầu> <chØ sè ci>] of <kiĨuphÇn tư>;
Var <ds biến mảng> : <tên kiểu mảng>;
Ví dụ: TYPE nhietdo = array[1 365] of integer;
Var A: nhietdo;
Trong : Chỉ số đầu, số cuối th ng biểu thc nguyờn;
Chỉ số đầu số cuối; Giữa số dấu
* C¸ch 2: Khai b¸o trùc tiÕp
Var <Ds biến mảng> : array[<chỉ số đầu> <chØ sè ci>] of <kiĨuphÇn tư>;
Var A,B : array[1 100] of real;
VÝ dô: Var nhietdo : array[1 365] of integer;
(7)3 Các thao tác xử lí mảng mét chiÒu
A
n
1 NhËp số phần tử mảng (n). Write( Nhap vao so ngay:);
Readln(n);
2 Nhập vào giá trị phần tử trong mảng (A[i]).
For i:=1 to n Begin
write(‘nhiet thu’ ,i, ’ : ’); readln(A[i]);
end;
C¸c b ícƯ ThĨ hiƯn b»ng pascal
a NhËp m¶ng mét chiỊu
víi n = 7
19 22 18 27 24 20 23
Ví dụ: Nhập nhiệt độ n ngày.
Đề mô
(8)b In m¶ng mét chiỊu
Writeln(‘ Mang vua nhap : ’); For i:=1 to n Write(A[i]:6);
Mang vua nhap:
- Thông báo
- In giá trị phần tử
23 20 24 27 18 22 19
Kết in hình:
Ví dụ: In m¶ng võa nhËp.
Đề mơ
(9)HÃy nhớ!
Mảng chiều dÃy hữu
hạn phần tử kiểu
Khai báo: tên mảng, số đầu, sè ci, kiĨu phÇn tư
Tham chiếu phần tử mảng:
Tên biến mảng[chỉ số phần tử]
Nhiều thao tác xử lí mảng dùng
cấu trúc lặp FOR TO DO.
15 20 19 25 18 12 16
Var A:ARRAY[1 100] OF integer;
(10)THANKS
(11)(12)C
ov
y
–
kh
ôn
g
là
g
ì
Bµi 11
MẢNG MỘT CHIỀU Tiết 2
Giáo án điện tử tin học lớp 11
Giỏo viên: Phan Đình Trung
(13)dem :=0;
For i :=1 to n
IF A[i]>TB then dem:=dem+1;
c C¸c thao t¸c xư lÝ kh¸c
Ví dụ: Đếm số ngày có nhiệt độ cao hơn nhiệt độ TB của tuần
TB = 21.86
Dem=0 7 6 5 4 3 2 1 i 19 22 18 27 24 20 23 A[i]
1 2 3 4
23 27
+1 +1 +1
* Đếm phần tử thỏa mãn điều kiện cho trước
3 Các thao tác xử lí mảng chiều
22 24
(14)Program Nhietdo;
Uses crt;
Var
A: Array[1 365] of integer; i,n,dem: integer;
S,TB : real ;
BEGIN
Clrscr;
write(‘ Nhap vao so : ’) ; readln(n) ;
S := ;
For i := to n Begin
write(‘ Nhap nhiet thu ‘,i,’ : ‘) ; readln(A[i]) ;
S:=S+A[i] ;
End;
TB := S/n ; dem := ;
For i := to n
If A[i]>TB Then dem := dem+1;
Writeln(‘ Nhiet trung binh ’ ,n,’ = ‘,TB : : 2) ;
Writeln(‘ So co nhiet cao hon nhiet TB la: ‘, dem) ; Readln ;
END.
Khai báo mảng chiều
Nhập mảng chiều Tính tổng
Đếm số phần tử thoả mÃn điều kiện
(15)Ví dụ: Tính tổng các phần tử trong
m¶ng chia hÕt cho 3. S :=0;For i :=1 to n
IF A[i] mod = 0 then S:=S+A[i];
19 12
18 25
16 20
15
S = 45
* Tính tổng phần tử mảng thỏa mãn điều kiện cho trước
Thơng thường, thao tác xử lí mảng chiều dùng câu lệnh FOR…TO…DO
(16)Program Chia3;
Uses crt;
Var
A: Array[1 100] of integer; i,n,s: integer;
BEGIN
Clrscr;
write(‘ Nhap vao so phan tu : ’) ; readln(n) ;
For i := to n Begin
write(‘ Nhap nhiet thu ‘,i,’ : ‘) ; readln(A[i]) ;
End; s:=0;
For i := to n
If A[i] mod 3=0 Then s:=s+a[i[;
Writeln(‘Tong can tim la: ‘,s : 6) ; Readln ;
END.
Khai báo mảng chiều
Nhập m¶ng chiỊu
Tính tổng phần tử chia hết cho 3
Đề mô
(17)Max :=a[1]; Csmax:=1; For i :=2 to n IF A[i]>Max then
Begin
Max:= A[i]; Csmax:=i; End; 19 12 18 25 16 20 15 Max:=15
Ví dụ tốn:Tìm phần tử lớn dãy số nguyên
Input: Số nguyên dương N (N<=250) dãy N số nguyên dương A1, A2, …An, mỗi số không 500.
Output: Chỉ số giá trị phần tử lớn dãy số cho (nếu có nhiều phần tử lớn cần đưa số chúng
1 2 3 4 5 6 7
(18)THANKS