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

bai 11.kieu mang(tiet 2)

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 (541.72 KB, 17 trang )


Kiểm tra bài cũ

Câu 1:
Nêu khái niệm mảng một chiều. Viết
cách khai báo mảng một chiều (trực tiếp hoặc
gián tiếp)?

Câu 2:
Cho một dãy số nguyên gồm 20 số. Hãy
viết khai báo dãy số trên bằng một trong hai
cách?

H ng d n tr l iướ ẫ ả ờ
Câu 1.
– M ng m t chi u là m t dãy h u h n các ph n t có ả ộ ề ộ ữ ạ ầ ử
cùng ki u.ể
– Khai báo
• Cách 1.
Var <Tên bi n m ng> : Array[ki u ch s ] of <ki u ph n t > ;ế ả ể ỉ ố ể ầ ử
• Cách 2 :
Type <Tên ki u m ng> = Array [<ki u ch s >] of <ki u ph n ể ả ể ỉ ố ể ầ
t >;ử
Var <tên bi n m ng> : <tên ki u m ng>;ế ả ể ả
Câu 2.
Khai báo
Cách 1.
Var a : Array[1 20] of integer ;
Cách 2:
Type songuyen = Array [1 20] of integer ;
Var a : songuyen ;



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

Bài 1. Tìm phần tử lớn nhất của dãy số nguyên

,
nếu dãy có nhiều phần tử cùng giá trị thì đ'a ra chỉ số của phần tử lớn nhất
đầu tiên.



* INPUT: Nhập số nguyên dơng n và dãy n số
nguyên dơng a
1
,a
2
, ,a
n
. (n

250, A[i]

500)
* OUTPUT: Chỉ số và giá trị của phần tử lớn nhất
trong dãy.

Qu¶ 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!
thuËt to¸n t×m max
MAX




ý tởng:
- Đặt giá trị Max = a
1
.

- Lần lợt cho i chạy từ 2 đến N, so sánh
giá trị a
i
với giá trị Max, nếu a
i
> Max thì
Max nhận giá trị mới là a
i
.





Liệt kê các bớc
Liệt kê các bớc

B1: Nhập N và dãy a
B1: Nhập N và dãy a
1
1
, , a
, , a
N
N
;
;

B2: Max
B2: Max


a
a
1
1
; i
; i


2;
2;


B3: Nếu i > N thì đa ra giá trị Max rồi kết thúc;
B3: Nếu i > N thì đa ra giá trị Max rồi kết thúc;

B4:
B4:
Bớc 4.1: Nếu a
Bớc 4.1: Nếu a
i
i
> Max thì Max
> Max thì Max


a
a
i
i
;
;
Bớc 4.2: i
Bớc 4.2: i


i+1 rồi quay lại B3.
i+1 rồi quay lại B3.

1. NhËp n vµ d·y a
1
, ,a
n

;
Write(‘ Nhap vao so luong phan tu:’);
Readln(n);
For i:=1 to n do
begin
write(‘ Phan tu thu ’ ,i, ’ = ’);
readln(a[i])
end;
2. Max ← a1 ; i ← 1;
Max:=a[1]; csmax:=1;
For i :=2 to n do
IF a[i]>max then
begin
max:=a[i];
csmax:=i;
end;

3. NÕu i>N ®a ra MAX
vµ chØ sè i => KÕt thóc;
4. NÕu a[i]>max th× max←a[i],
i ← i+1 => quay l¹i bíc 3.

Program Tim_Max;
Uses crt;
Type dayso = Array[1 250] of integer;
Var
A : dayso ;
i,n,max,csmax : integer;
BEGIN
Clrscr;

write(‘ Nhap vao so luong phan tu: ’) ;
readln(n) ;
For i := 1 to n do
Begin
write(‘ Phan tu thu ‘,i,’ = ‘) ;
readln(A[i]) ;
End;
Max := A[1] ; csmax :=1 ;
For i := 2 to n do
If A[i]>max Then
begin
max := a[i];
csmax:=i;
end;
Writeln(‘ Gia tri cua phan tu Max : ’,Max) ;
Writeln(‘ Chi so cua phan tu Max : ’, csmax) ;
Readln
END.

Nhap vao so luong phan tu :
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:
Phan tu thu 2 =
Phan tu thu 3 =
Phan tu thu 4 =
Phan tu thu 5 =
Phan tu thu 6 =
Phan tu thu 7 =

Bài 2. Nhập vào một dãy số nguyên, sắp xếp dãy theo trình tự không giảm.
* INPUT: Nhập số nguyên dơng n và dãy n số
nguyên dơng a
1
,a
2
, ,a
n
.
* OUTPUT: Dãy số đợc sắp xếp theo trình tự
không giảm.

 !"
#$ %&
'()*#+
,-#.
#/
01.
2  %ắ ế
3+ ậ
  ổ ọ


3
2
9
7
6
Cho dãy số sau: 3 2 9 7 6
4$256
7895:;<=:=> ?:@
Lợt 1:

i chạy từ đầu dãy đến vị
trí [cuối dãy -1]

Khi a[i]>a[i+1] tức là bọt
nớc bên trên nặng hơn
bọt nớc bên dới => bọt
nớc trên chìm xuống và
bọt nớ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.
1%?#(:;#A+ ?:B(#%A+C
Lợt 2:

i chạy từ đầu dãy đến vị
trí [cuối dãy - 2] (bỏ qua
phần tử cuối).


Sau lợt thứ hai bọt nớc
có trọng lợng lớn thứ hai
nằm sát trên bọt nớc
lớn nhất.


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.

Số phần tử ở các lợt duyệt (j) sẽ giảm từ n xuống hai phần tử.
Tại mỗi lợt duyệt:
- Cho i chạy từ 1 đến số phần tử -1,
nếu A[i]>A[i+1] thì
tráo đổi vị trí A[i] và A[i+1]
thông qua biến trung gian (Tg).
!%#
D+2+(.E)
:;"F
G#(F#/
1
For j := n downto 2 do
2
For i := 1 to j-1 do
IF A[i]>A[i+1] then
Tg := A[i];
A[i] := A[i+1];

A[i+1]:=Tg;
Begin
end;

H+ =$#)I
J.=$#)I
K5(L=$# G#.
3 ?
M!N$
PROGRAM Sapxep;
Uses crt;
Type dayso = Array[1 250] of integer;
Var
i, j , n , tg : integer;
A : dayso;
BEGIN
Clrscr;
write(‘ Nhap vao so phan tu cua day so : ’);
readln(n);
For i := 1 to n do
Begin
write(‘ Phan tu thu ‘,i,’ = ‘);
readln(A[i]);
end;
For j := n downto 2 do
For i:= 1 to j-1 do
If A[i]>A[i+1] Then
begin
Tg := A[i];
A[i]:=A[i+1];

A[i+1]:=Tg;
end;
Writeln(‘ Day so duoc sap xep ’);
For i:=1 to n do Write(A[i]:5);
Readln
END.

Bài tập về nhà
Bài 1: Nhập vào một dãy số nguyên. Tính tổng các
số chia hết cho 3
Bài 2: Nhập vào một dãy số nguyên.
a.Số lượng số chẵn và số lượng số lẻ có trong dãy
b.Số lượng số nguyên tố có trong dãy.

Củng cố - Dặn dò

Xem lại cách khai báo và các thao tác xử lí mảng
một chiều. Ví dụ tìm giá trị lớn nhất và sắp xếp tráo
đổi.

Làm bài tập về nhà

Chuẩn bị nội dung cho tiết thực hành: “Bài tập
thực hành 3(tiết 1)”

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

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