Gi¸o ¸n ®iÖn tö tin häc líp 11
MẢNG MỘT CHIỀU
KIÓU D÷ LIÖU Cã CÊU TRóC
Ch¬ngIV
Bµi11:
KIÓU D÷ LIÖU Cã CÊU TRóC
Ch¬ngIV
KIÓU D÷ LIÖU Cã CÊU TRóC
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 độ 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ữ liệu cần tính và in ra (OUTPUT): tb, dem.
Hãyxácđịnh
Inputvà
Outputcủabài
toántrên?
Bài toán đặt vấn đề:
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.
Quansátchơngtrình,
hãychobiếtnếu
muốntínhnhiệtđộ
trungbìnhcủaNngày
trongnăm(VD:
N=365)thìsẽgặpkhó
khăngì?
Khaibáoquálớn
(t1,t2,t3, ,t365)và
chơngtrìnhquá
dài(với365lệnh
IF)!!!!!
Đểkhắcphụckhó
khănđótasửdụngkiểu
dữliệumảngmộtchiều.
Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu
17 20 18 25 19 12 19
A
1 2 3 4 5 6 7
Trongđó:
KhithamchiếuđếnphầntửthứitaviếtA[i].
Tênmảng:
Sốphầntửcủamảng:
Vídụ:
Kiểudữliệucủacácphần
tử:
1. Khái niệm mảng một chiều
19
A.
7
Kiểunguyên
Vídụ:A[5]=
19
2. Khai báo mảng một chiều trong PASCAL
*Cách1:Khaibáogiántiếp
TYPE <tên kiểu mảng> = array[<chỉ số đầu> <chỉ số cuối>] of <kiểu phầ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,chỉsốcuốithờnglàcáchằnghoặcbiểuthứcnguyên;
Chỉsốđầuchỉsốcuối;
Giữa2chỉsốlàdấu
*Cách2:Khaibáotrựctiếp
Var <Ds biến mảng> : array[<chỉ số đầu> <chỉ số cuối>] of <kiểu phần tử>;
Var M,N : array[1 100] of real;
Ví dụ: Var A : array[1 365] of integer;
3. 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 so phan tu mang:);
Readln(n);
2.Nhậpvàogiátrịcủacácphầntử
trongmảng
(
A
[i]).
For i:=1 to n do
Begin
write(phan tu thu ,i, : );
readln(A[i]);
end;
Các b ớc
Thể hiện bằng
pascal
a.Nhậpmảngmộtchiều
vớin=7
19171921182017
Vídụ:
Nhậpnhiệtđộnngày.
b.Inmảngmộtchiề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ácphầntử
17 20 18 21 19 17 19
Kếtquảinramànhình:
Vídụ:
Inmảngvừanhập.
3. Các thao tác xử lí trong mảng một chiều
dem :=0;
For i :=1 to n do
IF A[i]>TB then dem:=dem+1;
c.Đếmcácphầntửtrongmảngthỏamãnđiềukiện
chotrớc
Vídụ
:
Đếmsốngàycónhiệtđộ
caohơnnhiệtđộTBcủa
tuần.
TB = 18.7
Dem=0
7654321
i
19171921182017
A[i]
0 1 1 2
3
3 4
20 21 19 19
+1 +1 +1+1
3. Các thao tác xử lí trong mảng một chiều
Program vd1;
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 TB la: , dem) ;
Readln ;
END.
Khai b
áomảng1chiều
Nhậpmảng1chiều
Tínhtổng
Đếmsốphầntửthoả
mãnđiềukiện
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:
1. Mảng một chiều:
2. Khai báo 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ó hai cách
Cách 1:
TYPE <tên kiểu mảng> = array[<chỉ số đầu> <chỉ số
cuối>] of <kiểu phần tử>;
Var <ds biến mảng> : <tên kiểu mảng>;
Cách 2:
Var <Ds biến mảng> : array[<chỉ số đầu> <chỉ số
cuối>] of <kiểu phần tử>;