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 độ TB cao hơn nhiệt trung bình trong tuần?* Dữ liệu
Trang 1Bµi 12
Tin Học 11
Trang 2Nhậ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 độ TB 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 đề:
Trang 3if (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.
Trang 4IF) !!!!!
Để khắc phục khó
khăn đó ta sử dụng kiểu
dữ liệu mảng một chiều.
Trang 5M¶ng mét chiÒu lµ mét d·y h÷u h¹n c¸c phÇn tö cïng kiÓu
Trang 62 Khai báo mảng một chiều trong PASCAL
* 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 365] of integer;
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 365] of integer;
Trang 73 Các thao tác xử lí trong mảng một chiều
write(‘nhiet do ngay thu’ ,i, ’ : ’); readln(A[i]);
19 21
18 20
17
Ví dụ: Nhập nhiệt độ n ngày.
Trang 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á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 = 18.7
Dem=0
7 6
5 4
3 2
1 i
19 17
19 21
18 20
Trang 10If 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 ¸o m¶ng 1 chiÒu
NhËp m¶ng 1 chiÒu TÝnh tæng
§Õm sè phÇn tö tho¶ m·n ®iÒu kiÖn
Trang 11Nhap 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:
Trang 12Thô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ảng chia hết cho 3 S :=0; For i :=1 to n do
IF A[i] mod 3 = 0 then S:=S+A[i];
19 12
18 25
16 20
15
S = 45
Trang 1315 20 19 25 18 12 16
Var A :ARRAY[ 1 100 ] OF integer ;
A[5] = 18
Trang 14Vớ dụ 1 Tìm phần tử lớn nhất của dãy số nguyên
Hãy xác định Input, Output và nêu thuật toán tìm Max?
a1,a2, ,an.
nhiều phần tử lớn nhất chỉ cần đưa ra một trong số chỳng ).
4 Một số vớ dụ
Trang 15Qu¶ nµy
lín nhÊt
Qu¶ nµy míi lín nhÊt
å! Qu¶ nµy lín h¬n
T×m ra qu¶ lín nhÊt råi!
MAX
Trang 17Write(‘ Nhap vao so luong phan tu:’);
Trang 18IF a[i]>max then
begin max:=a[i];
csmax:=i;
end;
4 NÕu a[i]>max th×
max← a[i],
i ← i+1 => quay l¹i b íc 3.
Writeln(‘gia tri cua phan tu Max:’, Max);
Writeln(‘chi so phan tu Max:’, csmax);
Readln
End.
Trang 19Writeln(‘ Gia tri cua phan tu Max : ’,Max) ;
Writeln(‘ Chi so cua phan tu Max : ’, csmax) ;
Readln ;
END.
Trang 20Nhap vao so phan tu cua day so : 7
Phan tu thu 1 = 15
20 16 25 18 12 19
Gia tri cua phan tu Max : 25
Chi so cua phan tu Max : 4
Ch ¬ng tr×nh ch¹y vµ cho kÕt qu¶ nh sau:
Trang 23ớcưbênưdướiưnổiưlênư( tráo đổi
vị trí).
•Sauư lượtư thứư nhất,ư bọtư nướcư cóư trọngư lượngư lớnư nhấtư sẽư chìmưxuốngưđáy.
Trọng l ợng của bọt n ớc thứ i là giá trị của A[i]
ưưưưưưưưưưưưưưưưưưưưư
•Quáư trìnhư duyệt,ư tráoư đổiư
đượcư lặpư điư lặpư lạiư choư đếnư khiư chỉư cònư duyệtư haiư phầnư tửư vàư thuư đượcư dãyư khôngưgiảm.
Trang 24Khai b¸o m¶ng 1 chiÒu
Writeln(‘ Day so duoc sap xep ’);
For i:=1 to n do Write(A[i]:5);
Readln;