Bài giảng Lý thuyết mảng một chiều - Nguyễn Thái Quang

Bài toán đặt vấn đề:

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.

ppt13 trang | Chia sẻ: hienduc166 | Lượt xem: 659 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Lý thuyết mảng một chiều - Nguyễn Thái Quang, để tải tài liệu về máy bạn click vào nút TẢI VỀ ở trên
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 17201825191219A 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.19MẢNG MỘT CHIỀU1. Khỏi niệm2. Khai bỏo mảng một chiều trong PASCAL* Cách 1: Khai báo gián tiếp TYPE = array[..] of ; Var : ;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 : array[..] of ;	 Var A,B : array[1..100] of real;Ví dụ: 	Var nhietdo : array[1..366] of real;3. Cỏc thao tỏc xử lớ trong mảng một chiều An1. 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ướcThể hiện bằng pascal a. Nhập mảng một chiều với n = 719171921182017Ví 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 19Kết quả in ra màn hình:Ví dụ: In mảng vừa nhập.3. Cỏc thao tỏc xử lớ trong mảng một chiều * Đế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.7Dem=07654321i19171921182017A[i]011233420211919+1+1+1+13. 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áo mảng 1 chiềuNhập mảng 1 chiềuTính tổngĐếm số phần tử thoả mãn điều kiện 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ích các phần tử trong mảng thoả mãn điều kiện cho trước Ví dụ: Tính tích các phần tử trong mảng chia hết cho 2.P :=0;For i :=1 to n do IF A[i] mod 2 = 0 then P:=P*A[i];1911142171015 P = 2803. Cỏc thao tỏc xử lớ trong mảng một chiều 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 16Var A:ARRAY[1..100] OF integer; A[5] = 18Moọt laàn nửừa kớnh chuực Thaày coõ vui veừ, haùnh phuực vaứ thaứnh ủaùt trong cuoọc soỏng!Mụứi Thaày Coõ nghổ 

File đính kèm:

  • pptLY THUYET MANG MOT CHIEU.ppt
Bài giảng liên quan