1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Tin học 11 - Bài 13: Bài tập mảng một chiều

15 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 536,93 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Khi a[i]>a[i+1] tøc lµ bät • Sau lượtthứ hai bäth¬n nước cã nướcbên trªn nÆng bät träng lượng lín hai nướcbên dưới =>thø bọt nước n»m s¸t trªn bät vµ nước lín trªn ch×m xuèng bät nước [r]

Trang 1

Bµi 13

Trang 2

Bài 1 Tìm phần tử lớn nhất của dãy số nguyên (với n  250 và A[i]  500 ) , 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

Hãy xác định Input, Output và nêu thuật toán tìm Max?

* INPUT : Nhập số nguyên dương n và dãy n số nguyên

dương a1,a2, ,an

* OUTPUT : Chỉ số và giá trị của phần tử lớn nhất

trong dãy

Trang 3

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!

Trang 4

   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;

 

&  '()$*)'(

+",-./0

Trang 5

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 phan tu cua day so : ’) ; 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 := 1 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 ;

Trang 6

Nhap 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:

Phan tu thu 2 =

Phan tu thu 3 =

Phan tu thu 4 =

Phan tu thu 5 =

Phan tu thu 6 =

Phan tu thu 7 =

Trang 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 a1,a2, ,an

* OUTPUT : Dãy số được sắp xếp theo trình tự không giảm

Trang 8

Các em hãy cho

biết để giải bài

toán trên, ở lớp 10

chúng ta dùng

thuật toán gì?

Là Thuật toán tráo đổi kiểu nổi bọt từ trên

xuống!

Trang 9

2

9

7

Cho dãy số sau: 3 2 9 7 6

Giả sử:

Mỗi phần tử được xem như một bọt nước;

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

Trọng lượng của bọt nước thứ i là giá trị của A[i]

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

Trang 10

1!2 $345-6$ 7$ 89:  ;<=)$> ! <2 $3

?.)@-6$ 7$A

BCD.$>  !2 $3B

 '('+($*

$H <,/ $ << 8?<:

C¸c em h·y cho biÕt trong Pascal nhËn xÐt 1 ®­îc thÓ

hiÖn b»ng lÖnh g×

?

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;

Trang 11

Khai b¸o m¶ng 1 chiÒu

NhËp m¶ng 1 chiÒu

Xö lÝ m¶ng b»ng thuËt

to¸n næi bät

In kÕt qu¶

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 ’);

Trang 12

Bài 3 Nhập vào một dãy A tăng gồm N (N  250) số nguyên dương khác nhau và một

số k Cho biết vị trí của số hạng có giá trị bằng k trong dãy (nếu có) ?

* INPUT: Nhập số nguyên dương n, dãy n số nguyên

dương a1,a2, ,an và số nguyên k

* OUTPUT: Chỉ số i mà ai = k hoặc thông báo “Không

dãy A có giá trị bằng k

Trang 13

Các em hãy nêu các cách

để giải bài toán

trên ?

I2 -6$ $> ! <$J K$ D 5 <5$F ! <

<5$F/O <M

Từ ý tưởng trên hãy viết đoạn chương trình bằng PASCAL

để tìm số hạng của dãy có giá trị bằng

k?

For i := 1 to n do

IF A[i] = k then

Begin Tim_thay:=true;

cs:=i;

break;

end;

Tim_thay := false;

IF tim_thay then writeln(‘Chi so tim duoc: ’,i)

C5A ?*)M)$2 $Q

Trang 14

C5A?*)M) FR

10 9

8 7

6 5

4 3

2 1

i

33 31

30 22

21 9

6 5

4 2

A

I6$$J K$A <V- W"XXY 

33 31

30 22

21

I6$$JA <V- ]"UU 

I6$$J/A <V- \"" 

22

21

6

21

Trang 15

Dau:=1; Cuoi:=n; tim_thay:=false;

while ( Dau<= Cuoi) or NOT(tim_thay) do

Begin Giua:= (Dau+Cuoi) div 2;

IF A[giua] = k then Tim_thay :=true else

IF (A[Giua]>k) then Cuoi := Giua – 1

else Dau := Giua +1;

end;

IF Tim_thay then Writeln(‘ Chi so tim duoc la : ’,Giua)

B'<("M$*)$K !<V

e5$* $b 6-N-.> < Df $*)$KDN gY"CD

... class="text_page_counter">Trang 11< /span>

Khai báo mảng chiều< /b>

Nhập mảng chiều< /b>

Xử lí mảng thuật

toán...

Trang 12

Bài Nhập vào dãy A tăng gồm N (N  250) số nguyên dương khác

số k Cho biết vị trí... 13

Các em nêu cách

để giải toán

trên ?

I2 - 6$ $> ! <$J K$

Ngày đăng: 01/04/2021, 20:44

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w