Trường Đại học Điện lực Tập đoàn Điện lực Việt Nam



tải về 1.67 Mb.
trang32/48
Chuyển đổi dữ liệu18.07.2016
Kích1.67 Mb.
#1821
1   ...   28   29   30   31   32   33   34   35   ...   48

7.1.3. Khai báo mảng hai chiều


  • Khai báo trực tiếp:

VAR Tên_biến_mảng : ARRAY[chỉ_số_hàng, chỉ_số_cột] OF kiểu_phần_tử;

Trong đó:

- chỉ_số_hàng, chỉ_số_cột: là cách tổ chức các phần tử của mảng, cách truy nhập vào các phần tử của mảng, nó có thể là các kiểu dữ liệu đơn giản vô hướng đếm được, hữu hạn giá trị.

- kiểu_phần_tử: là kiểu dữ liệu của các phần tử của mảng, có thể là bất kỳ kiểu dữ liệu nào.


Ví dụ 7.4: Khai báo mảng trực tiếp:

VAR X : array[1..15,1..5] of integer;

HT: array[1..50,1..50] of string[30];

Trong khai báo trên:

- X là mảng hai chiều có thể được xem như là một ma trận có tối đa 75 (tối đa là 15 hàng và tối đa 5 cột), các phần tử có kiểu nguyên.

- HT là mảng hai chiều có thể được xem như là một ma trận có tối đa 50 hàng và 50 cột, các phần tử có kiểu xâu có tối đa 30 ký tự.



  • Khai báo gián tiếp:

TYPE Tên_kiểu_mảng = ARRAY[chỉ_số_hàng, chỉ_số_cột] OF kiểu_ phần_tử;

VAR Tên_biến_mảng : Tên_kiểu_mảng;


* Chú ý: Trong các khai báo trên, chỉ số só thể là kiểu miền con, hoặc kiểu liệt kê vô hướng
Ví dụ 7.5: Khai báo mảng gián tiếp: khai báo mảng trực tiếp như trong ví dụ 5.1 tương đương với cách khai báo gián tiếp như sau:

TYPE M1 = array[1..15,1..5] of integer;

M2 = array[1..50,1..50] of string[30];

VAR X : M1;

HT: M2;


  • Truy cập đến từng phần tử của mảng 2 chiều theo cú pháp:

Tên_biến_mảng[chỉ_số_hàng, chỉ_số_cột]
Ví dụ 7.6: với khai báo mảng trong ví dụ 7.5

M1[1,1] là chỉ phần tử ở hàng 1, cột 1 trong mảng M1

M1[i,j] là chỉ phần tử ở hàng i, cột j trong mảng M1

* Chú ý: Thực chất mảng hai chiều là màng một chiều mà các phần tử của nó là một mảng một chiều.

7.1.4. Các phép toán trên mảng


* Phép gán:

- Có thể thực hiện gán hai biến mảng cho nhau nếu chúng cùng kiểu dữ liệu với nhau.



Ví dụ 7.7: Với khai báo mảng sau:

TYPE dayso = array[1..50] of integer;

VAR a,b:dayso; {a và b được gọi là cùng kiểu dữ liệu với nhau}

c,d: array[1..50] of integer;



{c và d cùng kiểu dữ liệu với nhau nhưng không cùng kiểu với a và b}

Ta có thể thực hiện các phép gán sau:

a:=b; b:=a; c:=d; d:=c;

- Các phần tử trong một mảng sẽ có các phép toán của kiểu dữ liệu của nó.


Ví dụ 7.8: Với khai báo mảng ở ví dụ 7.7 ta có

Các phần tử a[i] có kiểu dữ liệu là kiểu integer nên nó có mọi tính chất như một biến có kiểu integer.


* Phép so sánh

- Không được sử dung bất kỳ phép so sánh nào với biến có kiểu dữ liệu là kiểu mảng.

- Nếu kiểu phần tử của mảng có thực hiện được các phép so sánh thì có thể thực hiện các phép so sánh giữa các phần tử có cùng kiểu dữ liệu với nhau.

7.1.5. Nhập và in dữ liệu của mảng


7.1.5.1. Nhập dữ liệu cho mảng

Để nhập dữ liệu cho mảng ta cũng sử dụng câu lệnh read hay readln, tuy nhiên không được phép sử dụng các lệnh nhập dữ liệu cho biến mảng mà chỉ sử dụng cho từng phần tử trong mảng. Do vậy để nhập dữ liệu cho mảng ta phải nhập dữ liệu cho từng phần tử trong mảng.

  • Nhập dữ liệu cho mảng một chiều ta sử dụng một vòng FOR như sau:

Ví dụ cho mảng A được khai báo như sau:

Var A:array[1..100] of integer;

Nhập dữ liệu cho mảng A như sau:

For i:=1 to 100 do

Readln(A[i]);

Sử dụng vòng lặp FOR để duyệt hết mảng A, ứng với mỗi giá trị của i ta thực hiện nhập dữ liệu cho phần tử ở vị trí thứ i trong mảng A.



  • Nhập dữ liệu cho mảng hai chiều ta sử dụng hai vòng FOR lồng nhau như sau:

Ví dụ cho mảng A được khai báo như sau:
Var A:array[1..50,1..50] of integer;
Nhập dữ liệu cho mảng A như sau:

For i:=1 to 50 do

For j:=1 to 50 do

Readln(A[i,j]);

Sử dụng hai vòng lặp FOR để duyệt hết mảng A, thực hiện duyệt hết theo từng hàng một, ứng với mỗi giá trị của i ta thực hiện nhập dữ liệu cho phần tử trên hàng i, ứng với mỗi giá trị i và j ta thực hiện nhập dữ liệu cho phần tử ở vị trí hàng i, cột j trong mảng A.
7.1.5.1. In dữ liệu mảng lên màn hình

Để in dữ liệu mảng ta cũng sử dụng câu lệnh write hay writeln, tuy nhiên không được phép sử dụng các lệnh in dữ liệu cho biến mảng mà chỉ sử dụng cho từng phần tử trong mảng. Do vậy để in dữ liệu mảng lên màn hình ta phải in dữ liệu từng phần tử trong mảng.


  • In dữ liệu mảng một chiều ta sử dụng một vòng FOR như sau:

Ví dụ cho mảng A được khai báo như sau:

Var A:array[1..100] of integer;

In dữ liệu mảng A như sau:

For i:=1 to 100 do

write(A[i]:5);

Sử dụng vòng lặp FOR để duyệt hết mảng A, ứng với mỗi giá trị của i ta thực hiện in dữ liệu phần tử ở vị trí thứ i trong mảng A.



  • In dữ liệu mảng hai chiều ta sử dụng hai vòng FOR lồng nhau như sau:

Ví dụ cho mảng A được khai báo như sau:

Var A:array[1..50,1..50] of integer;

In dữ liệu mảng A theo dạng bảng như sau:

For i:=1 to 50 do

begin

For j:=1 to 50 do



write(A[i,j]);

writeln; {xuống dòng}

end;

Sử dụng hai vòng lặp FOR để duyệt hết mảng A, thực hiện duyệt hết theo từng hàng một, ứng với mỗi giá trị của i ta thực hiện in dữ liệu từng phần tử trên hàng i, in hết một hàng sẽ xuống dòng để in tiếp dòng tiếp theo, ứng với mỗi giá trị i và j ta thực hiện in dữ liệu phần tử ở vị trí hàng i, cột j lên màn hình.


Ví dụ 7.9: Viết chương trình nhập vào một dãy số có n phần tử nguyên (1<=n<=100).

  • In dãy số đó lên màn hình theo hàng.

  • Tính tổng và trung bình cộng các phần tử trong dãy số đó. In kết quả lên màn hình.

Program vidu_7_9;

Var A: array[1..100] of integer;

S, i, n: integer;

TB:real;

Begin

Write(‘ Nhap so phan tu cua day so n = ‘); readln(n);



Writeln(‘ Nhap tung phan tu trong day so :’);

For i:=1 to n do

Begin

Write(‘a[‘,i,’]= ‘);readln(a[i]);



End;

Writeln(‘ In day so vua nhap vao la ‘);

For i:=1 to n do

Write(a[i]:5);

{Tinh tong va trung binh cong}

S:=0;


For i:=1 to n do

S:=S+a[i];

TB:=S/n;

Writeln(‘ Tong cac phan tu day so S = ‘,S);

Writeln(‘ Trung binh cong TB = ’,TB:8:2);

Readln;


End.

Ví dụ 7.10: Viết chương trình nhập vào một ma trận nguyên cỡ mxn (1<=n, m<=20).

  • In ma trận đó lên màn hình theo bảng.

  • Tính tổng các phần tử âm của ma trận.

Program vidu_7_10;

Var A: array[1..20,1..20] of integer;

S, i, n: integer;

Begin

Write(‘ Nhap so hàng m = ‘); readln(m);



Write(‘ Nhap so cot n = ‘); readln(n);

Writeln(‘ Nhap tung phan tu trong ma tran :’);

For i:=1 to m do

For j:=1 to n do

Begin

Write(‘a[‘,i,’,’,j,’]= ‘);readln(a[i,j]);



End;

Writeln(‘ In ma tran vua nhap theo dang bang: ‘);

For i:=1 to m do

Begin


For j:=1 to n do

Write(a[i,j]:5);

Writeln;

End;


{Tinh tong cac so am trong ma tran}

S:=0;


For i:=1 to m do

For j:=1 to n do

If a[i,j]<0 then

S:=S+a[i,j];

Writeln(‘ Tong cac phan tu am la S = ‘,S);

Readln;


End.

Каталог: images
images -> Hướng dẫn sử dụng Dropbox Để sử dụng được Dropbox
images -> BÀi thuyết trình cách xáC ĐỊnh và chế ĐỘ pháp lý CỦa các vùng biển theo công ưỚc của liên hiệp quốc về luật biển năM 19821
images -> Céng hßa x· héi chñ nghÜa viÖt nam Độc lập tự do hạnh phúc
images -> Lúa gạo Việt Nam Giới thiệu
images -> Trung Tâm kt tc-đl-cl
images -> Số: 105/2008/QĐ-ttg CỘng hòa xã HỘi chủ nghĩa việt nam độc lập Tự do Hạnh phúc
images -> ChuyêN ĐỀ ĐẠi số TỔ HỢP, XÁc suất kiến thức cơ bản Đại số tổ hợp
images -> BỘ giáo dục và ĐÀo tạo trưỜng đẠi học luật tp. HỒ chí minh dưƠng kim thế nguyên thủ TỤc phá SẢn các tổ chức tín dụng theo pháp luật việt nam
images -> Review of Condor, Sun Grid Engine and pbs

tải về 1.67 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   28   29   30   31   32   33   34   35   ...   48




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương