Tải bản đầy đủ (.ppt) (13 trang)

Tin 11 Tiet 21 Bai 11 Mang1C

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (540.83 KB, 13 trang )


Bµi
11
Gi¸o ¸n ®iÖn tö tin häc líp 11

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 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 đề:

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.

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 đó ta sử dụng kiểu
dữ liệu mảng một chiề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 đó :


Khi tham chiế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
1. Khái niệm

2. 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 KMnhietdo = array[1 365] of
integer;
Var nhietdo:KMnhietdo;
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;

3. Các thao tác xử lí trong mảng một chiều
A
n
1.
Nhập số phần tử của mảng (n).

Write( Nhap vao so ngay:);
Readln(n);
2. Nhập vào giá trị của các phần tử
trong mả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
a. Nhập mảng một chiều
với n = 7
19171921182017
Ví dụ:
Nhập nhiệt độ n ngày.


b. 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ông báo

-
In giá trị của các phần tử
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.

* Đế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
7654321
i
19171921182017
A[i]
0 1 1 2
3
3 4
20 21 19 19
+1 +1 +1+1

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
á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

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:

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ả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];
19121825162015
S = 45


Hãy nhớ!
Mảng một chiều là một dãy
hữu hạn các phần tử cùng kiểu.
Khai báo: tên mảng, chỉ số đầu,
chỉ số cuối, 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;
A[5] = 18

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×