1. Trang chủ
  2. » Nghệ sĩ và thiết kế

Tải Giải bài tập Tin học 11 bài 11 - Kiểu mảng

7 40 0

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

THÔNG TIN TÀI LIỆU

Nội dung

- Phạm vi tìm kiếm trên dãy là một đoạn được xác định bởi các biến nguyên Dau và Cuoi, tương ứng cho biết bắt đầu từ phần tử có chỉ số Dau của dãy cho đến phần tử có chỉ số Cuoi của dãy.[r]

(1)

Giải tập Tin học 11 11

Chúng ta xét hai kiểu mảng thông dụng với nhiều ngơn ngữ lập trình kiểu mảng chiều kiểu mảng hai chiều

1 Kiểu mảng chiều

- Mảng chiều dãy hữu hạn phần tử có kiểu Mảng đặt tên phần tử mang số Để mô tả mảng chiều cần xác định kiểu phần tử cách đánh số phần tử

- Với mảng chiều ta quan tâm đến:

+ Tên kiểu mảng chiều

+ Số lượng phần tử mảng

+ Kiểu liệu phần tử

+ Cách khai báo biến mảng

+ Cách tham chiếu đến phần tử

Tại ta lại phải sử dụng mảng?

Giả sử ta muốn đo nhiệt độ trung bình tháng đưa ngày cao nhiệt độ trung bình Nếu sử dụng kiến thức ta biết từ đầu chương trình đến Ta phải khai báo 30 biến để lưu giữ giá trị nhiệt độ ngày tháng Sau phải gõ lại nhiều lệnh if gây nhàm chán

a) Khai báo

Cách 1: Khai báo trực tiếp biến mảng chiều

Var<tên biến mảng> :array[kiểu số] of <kiểu phần tử>;

Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng chiều

Type<tên kiểu mảng>=array[kiểu số] of <kiểu phần tử>;

Var<tên biến mảng>:<tên kiểu mảng>;

Trong đó:

(2)

+ Kiểu phần tử kiểu liệu phần tử mảng

+ Tham chiếu đến phần tử mảng ta viết :

<tên biến mảng>[chỉ số];

Ví dụ:

Var nhietdo:array[1 30] of integer;

Muốn tham chiếu tới phần tử thứ 20 ta viết nhietdo[20]

b) Một số ví dụ

Ví dụ Tìm phần tử lớn dãy số nguyên

Input: Số nguyên dương N (N<=250) dãy N số nguyên dương A1, A2, , An, số không vượt 500

Output: Chỉ số giá trị phần từ lớn dãy số cho (nếu có nhiều phần tử lớn cần đưa số chúng

program vidu1; uses crt;

var arrayint:array[1 250] of integer; n,i,mi:integer;

begin

clrscr;

writeln('nhap vao so phan tu'); readln(n);

for i:=1 to n begin

writeln('phan tu thu ',i,'='); readln(arrayint[i]); end; mi:=1;

for i:=2 to n begin

if arrayint[i]>arrayint[mi]

then

mi:=i;

end;

writeln('gia tri lon nhat la',arrayint[mi],'chi so la',mi); readln;end

Ví dụ 2: Sắp xếp dãy số nguyên thuật toán tráo đổi

(3)

uses crt;const Nmax=250; var

N,i,j,t:integer;

A:array[1 Nmax] of integer; begin

clrscr;

write('nhap so luong phan tu cua day N='); readln(N);

for i:=1 to N begin

write('phan tu thu',i,'='); readln(A[i]);

end; for j:=N downto for i:=1 to j-1

if A[i]>A[i+1] then begin

t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; end;

writeln('day da duoc sap xep la'); for i:=1 to N write(A[i]:4); readln;

end

Kết quả:

Ví dụ 3: Tìm kiếm nhị phân

Bước 1: Nhập N, số hạng a1, a2 aN khóa k

Bước 2: Dau <— 1, Cuoi <-N;

Bước 3: Giua <— [Dau + Cuoi]/2

Bước 4: Nếu Agiữa = k thơng báo số Giua kết thúc;

Bước 5: Nếu Agiữa> k đặt Cuối= Giữa-1 chuyển đến bước 7;

(4)

Bước 7: Nếu Dau > Cuoi thơng báo dãy A khơng có số hạng có giá trị k kết thúc;

Bước 8: Ọuay lại bước

Từ thuật toán toán, rút số điều cần phải lưu ý, là:

- Mảng dược xếp tăng dần

- Trong thuật tốn, việc tìm kiếm thực chất lặp số lần (chưa xác định trước) thao tác sau: chọn số hạng "giữa" dãy, so sánh số hạng với k, vào kết so sánh để kết luận tìm thấy (trường hợp xảy bằng) thu hẹp phạm vi tìm kiếm(trường hợp khơng bằng)

- Khi q trình lặp nói dừng lại? Q trình lặp cần dừng lại với hai kiện sau xảy gồm tìm thấy khơng gian tìm kiếm trở nên rỗng (nghĩa khơng cịn đoạn dãy cho ta hy vọng chứa phân tử cần tìm)

- Phạm vi tìm kiếm dãy đoạn xác định biến nguyên Dau Cuoi, tương ứng cho biết phần tử có số Dau dãy phần tử có số Cuoi dãy Từ đó, ta đưa công thức xác định phân tử "giữa" phạm vi tìm kiếm cơng thức xác định lại giá trị cho biến Dau hay Cuoi trường hợp thu hẹp phạm vi tìm kiếm

2 Kiểu mảng hai chiều

Mảng hai chiều: Là bảng phần tử kiểu

Ta coi mảng hai chiều mảng chiều mà phần tử mảng chiều lại mảng khác

Ví dụ:

Var b:array[1 9] of array[1 10] of integer;

(5)

Cách khai báo:

Ngồi khai báo theo cách Ta có thêm cách để khai báo mảng chiều

Cách 1:

Var<tên biến mảng>:array[kiểu số hang, kiểu số cột] of <kiểu phần tử>;

Cách 2:

Type<tên kiểu mảng>=array[kiểu số hang, kiểu số cột] of <kiểu phần tử>;

Var<tên biến mảng>:<tên kiểu mảng>;

Ví dụ:

Var b:array[1 9,1 10] of integer;

Hoặc

Type mang2chieu=array[1 9,1 10] of integer;

Var

B:mang2chieu;

Muốn tham chiếu đến phần tử mảng chiều ta sử dụng số số hàng số cột

Ví dụ:

Mang2chieu[5,6]

b) Một số ví dụ:

Ví dụ 1: Tính in bảng nhân

program bangnhan; uses crt;

var bnhan: array[1 9,1 9] of integer; i,j:integer;

begin clrscr;

for i:=1 to

for j:=1 to

(6)

begin

for j:=1 to write(bnhan[i,j]:4); writeln();

end; Readln end

Kết quả:

Ví dụ Chương trình sau nhập vào từ bàn phím phần tử mảng hai chiều B gồm hàng, cột với phần tử số nguyên số nguyên k Sau đó, đưa hình phần tử có giá trị nhỏ k

program vidu2; uses crt;

var arr: array[1 5,1 7] of integer; i,j,k:integer;

begin clrscr;

for i:=1 to

for j:=1 to begin

write('a[',i,']','[',j,']='); readln(arr[i,j]); end;

write('k='); readln(k);

write('cac phan tu nho hon k la:'); for i:=1 to

for j:=1 to if arr[i,j]<k then

write(arr[i,j]:4); readln

end

(7)

Ngày đăng: 27/12/2020, 01:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w