Array[ 'a' 'z'] Of Integer; Begin

Một phần của tài liệu Giáo trình lập trình cấu trúc pascal (Trang 54 - 59)

Write( ' X [',i, '] = ' ); (*Tạo chỉ dẫn để biết mà gõ vào *) Readln (X[i] ); (*Vào số nguyên qua bàn phím *)

End;

Writeln('Vào mảng Y');

For i:=1 To 5 Do Begin

Write( ' Y [',i, '] = ' ); (*Tạo chỉ dẫn để biết mà gõ vào *) Readln (Y[i] ); (*Vào số nguyên qua bàn phím *)

End;

Writeln('Tính tổng Z:=X+Y');

For i:=1 To 5 Do Z[i]:=X[i]+Y[i]; (*Tính tổng hai mảng *)

End.

Ví dụ 3:

Giả sử ta muốn biết trong 50 lần gõ vào phím chữ cái trên bàn phím (ở chế độ

chữ nhỏ), có bao nhiêu lần gõ vào mỗi loại chữ cái nhỏ từ 'a' đến 'z'.

Program ChuongTrinhDem; Uses Crt;

Var

i : integer; Chr : Char

A: Array[ 'a'... 'z'] Of Integer;Begin Begin

For Chr := 'a' To ' z' Do A[Chr] :=0; (*Xoá mảng A *)

For i:=1 To 50 Do Begin

Readln (Chr);

A[Chr] :=A[Chr] + 1;(* đếm số lần xuất hiện *)

End;

For Chr:= 'a' To 'z' Do

If A[Chr] > 0 Then

Writeln ('Chu ', Chr, ' = ' , A[Chr] : 3);

End.

10.2 Xếp mảng.

Việc sắp xếp các phần tử của mảng tăng hoặc giảm dần là một việc hay xảy ra

trong cuộc sống. Sau đây sẽ trình bày một số phương pháp sắp xếp mảng qua các

ví dụ.

Đầu tiên đem phần tử thứ nhất lần lượt so sánh với các phần tử tiếp theo, nếu

nó lớn hơn thìđem đổi chỗ giá trị của hai phần tử so sánh. Kết quả sau lượt đầu,

phần tử đầu tiên giữ giá trị nhỏ nhất. Tiếp tục vòng hai, đem phần tử thứ hai so

sánh với các phần tử tiếp theo ....

Program XepMang; Uses Crt; Const N=10 ; Var a: Array[1..N] Of Integer;

tg: Integer ; (*tg là biến trung gian *)

i,j: Integer;

Begin

ClrScr;

(*Vào mảng *)

For i:=1 To n Do Begin

Write (' Vào a [' ,i ,' ] = '); Readln (a[i]); End; (*xếp mảng lớn dầnx *) For i:=1 To n-1 Do For j:=i+1 To n Do Begin

If a[i] >a[j] Then Begin

(*đổi chỗ phần tử cho nhau® *)

tg:=a[i]; a[i]: = a[j]; a[j]:= tg;

End; End;

(*In ra kết quả I*)

For i:=1 To n Do Writeln (a[i]:5); End. Ví dụ 2: Cộng hai ma trận cùng số dòng và cùng số cột: c(m,n) = a(m,n)+b(m,n) Program TongHaiMaTran; Const m =3; n=4; Var a, b, c: Array [1...m, 1...n ] Of Integer; i, j, k: Integer; Begin

(*Vào dữ liệu cho ma trận aV *) For i:= 1 To m Do For j:= 1 To n Do Begin Write( 'a[', i, ',' , j, '] =' ); Readln (a[i, j] ); End;

(*Vào dữ liệu cho ma trận bV *)

For i:= 1 To m Do For j := 1 To n Do Begin Write( 'b[', i, ',' , j, '] =' ); Readln (b[i,j] ); End; (*Cộng hai ma trậnC *) For i:=1 To m Do For j:= 1 To n Do c[i,j]:=a[i,j]+b[i,j]; (*Hiển thị ma trận CH *) For i:=1 To m Do Begin

For j:= 1 To n Do Write (C [I, J] : 5 ); (*In một hàng *) Writeln;

End; End.

Trong chương trình trên, việc vào dữ liệu cho ma trận được tiến hành theo từng

dòng.

Ví dụ 3: Ví dụ 2 được viết lại theo kiểu thủ tục:

Program TongHaiMaTran; Const

m =3; n=4;

Type

Mang= Array [1..m, 1..n] Of Real; Var

a,b,c: Mang;

Procedure VaoMang(Var x, y: Mang); Var

i, j : Integer;

Begin

(*Vào dữ liệu cho ma trận xV *)

For i:= 1 To m Do For j:= 1 To n Do

Begin

Write( 'x[', i, ',' , j, '] =' ); Readln (x[i, j] );

End;

(*Vào dữ liệu cho ma trận yV *)

For i:= 1 To m Do For j := 1 To n Do Begin Write( 'y[', i, ',' , j, '] =' ); Readln (y[i,j] ); End; End;

Procedure TongHaiMaTran(x,y:Mang; Var Tong:Mang);

Var I,j: Integer;

Begin For i:=1 To m Do For j:= 1 To n Do Tong[i,j]:=x[i,j]+y[i,j]; End; Begin VaoMang(a,b); TongHaiMaTran(a,b,c); For i:=1 To m Do Begin

For j:=1 To n Do Write(c[i,j]; Writeln;

End; End.

Câu hỏi và bài tâp:

1. Vào lương của 10 người sau đó tính tổng lương?

2. Vào tên củ 10 sinh viên sau đó xếp tên theo A,B,C.. 3. Vào dữ liệu cho ma trận có dạng sau:

1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Sau đó chuyển thành: 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0

4. Tìm Max của mảng một chiều có 10 phần tử

5. Tìm Max của mảng A (10,12)

6. Cho hai mảng một chiều A và B hãy xếp hai mảng đó tăng dần sau đó trộn

hai mảng đó thành mảng C theo trật tự sau: a[1],b[1],a[2],b[2] v.v.

7. Cho ma trận thực dạng A [1..10,1..10] hãyđưa vào 100 thành phần của nó là các số ngẫu nhiên (Random), sau đó tính t ổng hai đường chéo chính. Tính tổng

tất cả các phần tử, trừ các thành phần của hai đường chéo chính.

Một phần của tài liệu Giáo trình lập trình cấu trúc pascal (Trang 54 - 59)