Tóm tắt chương IV – Tin học 11: Tại sao phải khai báo kích thước của mảng

Tóm tắt chương IV Tin học lớp 11. Giải câu 1 đến câu 11 trang 79, 80. Tại sao mảng là kiểu dữ liệu có cấu trúc …

Câu 1: Tại sao mảng là kiểu dữ liệu có cấu trúc?

Mảng là kiểu dữ liệu có cấu trúc bởi vì mảng (một chiều, hai chiều hay nhiều chiều) là kiểu có cấu trúc được đề cập tới sớm nhất trong các ngôn ngữ lập trình. Nó được xây dựng từ những kiểu dữ liệu dã có theo quy tắc khuôn dạng do ngôn ngữ lập trình cung cấp. Nó được dùng để chỉ định một nhóm đối tượng cùng một tính chất nào đó. Chẳng hạn, vectơ là một nhóm các số mà mỗi số ta có thể xác định chỉ cần biết chỉ số. Như vậy, để khai báo kiểu mảng phải chỉ ra kiểu dữ liệu chung của các phần tử và kiểu chỉ số.

Chúng ta phải khai báo kích cỡ cùa mảng chính bới để cách đánh số những thành phần của nó .

Câu 2: Tại sao phải khai báo kích thước của mảng?

Các thành phần của mảng hoàn toàn có thể có những kiểu sau đây : real, boolean, integer, longint

Câu 3: Các phần tử của mảng có thể có những kiểu gì?

Tham chiếu đến thành phần của mảng một chiều được xác lập bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ] ( ví dụ nhietdo [ 20J ). Còn tham chiếu đến thành phần của mảng hai chiều được xác lập bởi tên mảng cùng với hai chỉ số được phân làn bởi dấu phẩy và viết trong cặp ngoặc [ và ] ( ví dụ Arrlnt [ 5, 9J ) .

Câu 4: Tham chiếu đến phần tử của mảng bằng cách nào?

Mảng có những kiểu như biến : integer. Real. char. String. byte …

– Tham chiếu đến phần tử của mạng có 2 kiểu :
** Với mảng 1 chiều:
– Cách tham chiếu đến mảng: A[i] với i là chỉ số phân tử trong mảng.
vd: Vẫn xét mảng 10 20 30 5 6 7
A[1]=10; A[2]=20; A[3]=30; A[4]=50; A[5]=6; A[7]=7

– Cách khai báo mảng : Có 2 cách khai báo :

Khai báo trực tiếp: Thường thì cách khai báo trực tiếp được dùng nhiều hơn vì nó ngắn gọn.

var :array[kiểu chỉ số] of ;

ví dụ:
a:array[1..100] of integer;
b,c:array[1..250] of integer;

Khai báo gián tiếp:

type =array[kiểu phần tử] of ;
var :;

vd:
type mang=array[1..100] of integer;
var a,b,c:mang;

**Với mảng 2 chiều :
– Tham chiếu: Vì mảng 2 chiều là bảng nên sẽ cần chỉ số hàng và chỉ số cột: A[i,j] với i là chỉ số hàng, j là chỉ số cột.

– Khai báo : Tương tự như mảng 1 chiều nhưng thêm chỉ số cột .

Câu 5: Viết chương trình nhập từ bàn phím số nguyên dương N (N ≤100) và dãy A gồm N số nguyên A1…AN có giá trị tuyệt đối lớn hơn 1000. Hãy cho biết dãy A có phải là một cấp số cộng hay không và thông báo kết quả ra mành hình.

Trả lời
Để lập chương trình nhập từ bàn phím số nguyên dương N ( N < 100 ) và dãy A gồm N số nguyên A, A1 … AN có giá trị tuyệt đối không lớn hơn 100, thì ta cần phải triển khai việc kiểm tra xem số N nhập vào ( số thành phần của dãy ) có thỏa mãn nhu cầu nhu yếu của đầu bài hay không nghĩa là 0 < N < 100, nếu không đưa ra thông tin “ Mời nhập lại ”. Còn những thành phần, A1, … AN của mảng cũng phải là những số nguyên và có giá trị tuyệt đối không lớn hơn 100 ( A [ i ] > = – 100 và A [ i ] < = 100 ), nếu không đưa ra thông tin “ Mời nhập lạĩ ’ Tiếp đến ta phải kiểm tra dãy A nhập vào có phải là một cấp số cộng hay không nghĩa là những thành phần của dãy A vừa nhập vào có làm thành một cấp số cộng hay không và đưa ra màn hình hiển thị thông tin tác dụng ra màn hình hiển thị “ A là cấp số cộng ’ hoặc “ A không là cấp số cộng ”. Bởi vậy , Lấy d = A [ 2 ] — A [ 1 ] Khi đó, dãy A là cấp số cộng nếu thỏa mãn nhu cầu điều kiện kèm theo : A [ i ] = A [ 1 ] + ( i-1 ) d . ( hoặc điều kiện kèm theo A [ i ] – A [ i-1 ] = d với ( 1 Trong chương trình ta dùng một vòng lặp theo biến đếm i để kiểm tra xem mỗi A [ i ] có thỏa mãn nhu cầu điều kiện kèm theo nói trên hay không, chi cần phát hiện được một thành phần của A không thỏa mẫn là Kết luận được dãy A không là cấp số cộng . Chương trình : program bai5_chuong4 ; uses crt ; var A : array [ 1 .. 100 ] of integer ; d, rt, i, dem : integer ; begin clrscr ; writeln ( ‘ Nhap mot so lon hon 0 va nho hon 100 ’ ) ; repeat write ( ‘ Nhap N : ’ ) ; readln ( N ) if ( N > = 1000 ) or ( N < = 0 ) then writeln ( ’ Moi nhap lai ! ’ ) ; until ( N > 0 ) and ( N < 1000 ) ; writeln ( ‘ Nhap cac gia tri cac so hang co tri tuyet doi khong lon hon 1000 ’ ) ; for i : = 1 to n do repeat write ( ‘ a [ ‘, i, ’ ] = ‘ ) readln ( a [ i ] ) ; if ( A [ i ] > 100 ) or ( A [ i ] < - 1000 ) then write ( ’ Moi nhap lai ‘ ) ; until ( A [ i ] > – 1000 ) and ( A [ i ] < 1000 ) ; { Kiem tra xem CO la cap so cong khong ? } d : = A [ 2 ] – A [ 1 ] ; dem : = 0 ; for i : = 2 to n do if A [ i ] – A [ i-l ] od then dem : = dem + 1 ; if dem > 0 then writeln ( ‘ A khong la cap so cong ’ ) else writeln ( ’ A la cap so cong ’ ) ;
readln ,
end .
Khi chạy chương trình, nếu nhập số thành phần cùa dãy N = 5 và những thành phần của dãy theo thứ tự là 2,4,6, 8,10 thì chương trình đưa ra thông tin “ A la cap so cong ” ( Hình 59 ) .

Nhưng khi nhập N không thỏa mãn nhu cầu điều kiện kèm theo đầu bài, ví dụ điển hình N = – 5 thì chương trình đưa ra thông tin “ Mời nhập lại ! ”. Khi đó, ta phải vào lại N, ví dụ điển hình, N = 5 và nhập tiếp những thành phần của dãy, ví dụ điển hình : 1, 3, 5, 7, 9 thì hiệu quả của chương trình : “ A la cap so cong ’ ’ ( Hình 60 ) .

Còn trong trường hợp những thành phần nhập vào của dãy không thỏa mãn nhu cầu điều kiện kèm theo A [ i ] < 1000 và A [ i ] > – 1000 : thì ta phải nhập lại những thành phần của dãy cho đến khi chương trình đưa ra thông tin A là cấp số cộng hay không ?
Chẳng hạn, ta nhập vào dãy N = 7 phần từ với giá trị những thành phần lần lượt như sau :
2, 5, 7 8, 9, 4, 7 ( ở thành phần thứ tư lúc đầu nhập vào số-1500 thì chương trình nhu yếu nhập lại và đã nhập vào số 8 ) thì chương trình dưa ra thông tin : ” A khong la cap so cong * ( Hình 62 ) .

Bài 6: Viết chương trình nhập từ bàn phím số nguyên dương N (N ≤100) và dãy A gồm N số nguyên A1, A2 …AN có giá trị tuyệt đối không lớn hơn 1000. Hãy đưa ra những thông tin sau:

a) Số lượng số chẵn và số lượng số lẻ

b) số lượng số nguyên tố trong dãy

Trả lời
Đối với với bài toán này thì phần kiểm tra số nguyên dương N ( N < 100 ) và dãy A gồn N số nguyên A1, A2 … AN có giá trị tuyệt đối không lớn hơn 1000 giống như bài tập 5 đã nêu ờ trên. Chúng ta chi cần xử lý thêm 2 yếu tố nữa, đó là đếm số lượng số chẵn, số lẻ và số lượng số nguyên tố trong dãy . Chưntg trình : progran baitap6_chuong4 ; uses crt ; var array [ 1 .. 100 ] of integer ; if : boolean ; N, i „ l : integer ; so_nt, so_chan : integer ; begin for i : = - 1000 to 1000 do if i > 0 then NT : = false ;
so_chan : = 0 ; so_nt : = 0 ;
{ Nhap vao )
repeat
write ( ‘ So phan tu cua day A ( N < = 100 ), N = * ) ; readln ( N ) ; until ( N > 0 ) and
( N < = 100 ) ; for i : = 1 to N do begin { kiem tra cac phan tu cua day khi nhap vao } repeat write ( ‘ A [ ‘, i, ’ ] = ‘ ) ; readln ( A [ i ] ) ; if ( a [ i ] > 1000 ) or ( a [ i ] < - 1000 ) then write ( ‘ Moi nhap lai “ ) ; until ( a [ i ] > – 1000 ) and ( a [ i ] < 1000 ) ; = if A [ i ] mod 2 = 0 then so_chan : = so_chan + 1 ; if A [ i ] > 1 then
begin
u : = 2 ;
while ( ( u < = sqrt ( A [ i ] ) ) and ( A [ i ] mod u < > 0 ) ) ) do u : = u + 1 ; if u > sqrt ( A [ i ] ) then so_nt : = so_nt + 1 ;
end ,
end ;
{ In ra man hinh }
writeln ( ‘ So luong so chan : ’, so_chan ) ;
writeln ( ‘ So luong so le : ’, N – so_chan ) ;
writeln ( ’ So luong so nguyen tro : ’, so_nt ) ;
readln
End .
Khi chạy chương trình, ta lần lượt nhập những thành phần của dãy A :
Với N = 3 và những thành phần được nhập vào theo thứ tự :
A [ 1 ] = 5
A [ 2 ] = 7
A [ 3 ] = 900
thì chương trình đưa ra thông tin :
So luong so chan : 1
So luong so le : 2
So luong so nguyen to : 2
– Với 5 và những thành phần được nhập vào theo thứ tự :
A [ 1 ] = 12
A [ 2 ] = 3 A [ 3 ] = 5
A [ 4 > 10 A [ 5 ] = 11
thì chương trinh đưa ra thông tin :
So luong so chan : 2
So luong so le : 3
So luong so nguyen to : 3
Kết quả của chương trình như hình 63 sau đây :

Trong trường hợp số thành phần nhập vào và giá trị những thành phần của dãy A không thỏa mãn nhu cầu điều kiện kèm theo thì chương trình sẽ có thông tin mời nhập lại. Chẳng hạn, trong những trường hợp sau đây :
A [ 1 ] = 12
A [ 2 ] = 2000 thì chương trình đưa ra nhu yếu Moi nhap lai A [ 2 ] = 800 A [ 3 = 17
A [ 4 ] = – 1500 thì chương trình đưa ra nhu yếu Moi nhap lai A [ 4 ] = – 200 A [ 5 ] = 31 A [ 6 = 5 A [ 7 = 350
Kết quả chương trình đưa ra thông tin ( Hình 64 ) :
So luong so chan : 4
So Luong so le : 3
So luong so nguyen to : 3

Câu 7: Dãy F là dãy Phi-bo-na-xi nếu:

F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2 với N ≥ 2Quảng cáo – Advertisements

Viết chương trình nhập từ bàn phím số nguyên dương N và đưa ra màn hình số hạng thứ N của dãy Phi-bo-na-xi. Chương trình của bạn thực hiện với giá trị lớn nhất của N là bao nhiêu?

Ta cần viết chương trình nhập vào từ bàn phím số nguyên dương N và đưa ra màn hình hiển thị sổ hạng thứ N của dãy Phi-bô-nan-xi và đưa ra Kết luận : với giá trị lớn nhất nào của N thì chương trình triển khai được ?
Chương trình :
program bai7_chuong4 ;
uses crt ;
var
N, i : word ;
F, F1, F2 : word ;
Begin
clrscr ;
repeat
writeln ( ‘ Tim so hang thu N cua day Fibonaxi, Nĩ = ’ ) ) ;
readln ( N ) ;
if N < = 2 then writeln ( ’ Moi nhap lai ! ’ ) ; until N > 2 F1 : = 1 F2 : = 2 for i : = 3 to N do
begin
F : = F1 + F2 ;
Fl : = F2 ;
F2 : = F ;
end ;
writeln ( ‘ So fibonaxi thu ’, N : 5, ‘ la ’, F : 10 ) ;
readln ;

End.

Khi chạy chương trình, nếu nhập N < 2, ví dụ điển hình N = / thì trên chương trình đưa ra thông tin “ Moi nhap lai ”. Còn khi nhập N > — 2, ví dụ điển hình N = 7 thì chương trình đưa ra tác dụng : “ So fibonaxi thu 7 la 21 ”
Kết quả chương trình đưa ra tác dụng như hình 65 dưới đây :

Chương trình trên chỉ chạy được với N = 1001 vì số Fi-bô-na-xi thứ 1001 là 65048, số số Fi-bô-na-xi thứ 1002 vượt quá khoanh vùng phạm vi của kiểu word .

Bài 8: Chương trình sau đây thực hiện những gì?

program BT8 ;
const NMax = 50 ;
type Mass = array [ 1 … NMax, O.. NMax-1 ] of real ;
var A : Mass ;
i, j N : byte ; C : real ;
begin
Write ( ‘ Nhap N = ? ’ ) ;
readln ( N ) ; for i : = 1 to N do
for 0 to N-1 do
begin
write ( ‘ A [ i, j ; readln ( A [ i, j ] )
end ,
for i : = 1 to N do
for j : = 1 to N-1 do
begin
C : = A [ i, j ] ;
A [ i, j ] : = A [ N-i+1, j ]
A [ N-i+1, j ] : = C ;
end ;
for i : = 1 to N do begin
for j : = 1 to N — 1 do write ( A [ i, j ] : 5 : 2, ‘ ‘ ) ;
writeln
end ;
End .

Khi chạy chương trình, với N = 4 thì hiệu quả của chương trình như hình 67 dưới :

Chương trình triển khai việc hoán đổi vị trí dòng thứ i với dòng thứ N-i+J, nghĩa là hoán đổi vị trí dòng tiên phong với dòng sau cuối của màng hai chiều, dòng thứ hai từ trên xuống với dòng thứ hai từ dưới lên, .. Việc hoán đổi vị trí dòng thứ i với dòng đối xứng với nó được triển khai khi i nhận giá trị từ 1 đến N, làm cho mỗi dòng được hoán đổi vị trí hai lần. Vì vậy, sau cuối mảng A không biến hóa so với bắt đầu .

Câu 9: Cho mảng hai chiều kích thước nxm với các phần tử là những số nguyên. Tìm trong mỗi dòng phần tử lớn nhất rồi đổi chỗ nó với phần tử có chỉ số dòng bằng chỉ số cột.

Chương trình sau đây giải bài toán trên :
program Diag ;
var
N, i, j, max, Ind, Vsp : integer ;
A : array [ 1 .. 15, 1 .. 15 ] of integer ;
begin
write ( ‘ Nhap N : ’ ) ;
readln ( N ) ,
for i : = 1 to N do for j : = 1 to N do
begin
write ( ’ A [ ‘, i, ’, ’, j, ’ ] = ‘ ) ;
readln ( A [ i, j ] ) ;
end ;
for i : = 1 to N do
begin
Max : = A [ i, i ] ; Ind : = 1 ;
for j : = 2 to N do
if A [ i, j ] > Max then begin
Max : = A [ i, j ], Ind : = j ‘ n
end ;
Vsp : = A [ i, i ], A [ i, i ] : = Max ; A [ i, Ind ] : = Vsp ;
end ;
for i : = 1 to N do
begin
writeln ;
for j : = 1 to N do write ( A [ i, j ] : 3 ) ;
end ;
writeln

End.

Hãy sửa lại chương trình trên khi nhu yếu bài toán thay dòng bằng cột .

Có thể được chia thành ba đoạn chương trình sau đây :

Đoạn thứ nhất: Hai vòng lặp for-do lồng nhau ở đầu chưong trình có nhiệm vụ nhập vào một mảng hai chiều từ bàn phím

for i : = 1 to N do for j : = 1 to N do
begin
write ( ‘ A [ ‘, i, ’, ‘, j, ‘ ] = ’ ) ;
readln ( A ( i, j ] ) ;
end ;

Đoạn thứ hai: Hai vòng lặp lồng nhau tiếp theo thực hiện việc tìm phần tử lớn nhất trên dòng thứ i  hoán đổi vị trí phần tử này với phần từ vừa nằm trên dòng i vừa có chỉ số cột bằng i.

for i : = 1 to N do begin
Max : = A [ i, 1 ] ; Ind : = 1 ,

 for j:= 2 to N do

if A [ i, j ] > Max then
begin
Max : = A [ i, j ] ; Ind : = j ;
end ;
Vsp : = A [ i, i ] ; A [ i, i ] : = Max ; A [ i, Ind ] : = Vsp ;

end;

Đoạn thứ ba: Hai vòng lặp lồng nhau cuối chương trình in ra mảng kết quả

for i : = 1 to N do
begin
writeln ;
for j : = 1 to N do write ( A [ i, j ] : 3 ) ;
end ;
writeln
– Khi chạy chưomg trình trên, nhập vào N = 3 thì ta có mảng hai chiều 3 × 3 với 9 thành phần, ví dụ điển hình theo thứ tự như sau :
A [ 1,1 ] = 4
A [ 1,2 ] = 6
A [ 1,3 ] = 8
A [ 2,1 ] = 3
A [ 2,2 ] = 7
A [ 2,3 ] = 9
A [ 3, l ] = 4
A [ 3,2 ] = 9
A [ 3,3 ] = 5
Ta nhận thấy rằng, ở dòng thứ nhất, thành phần lớn nhất của dòng là A [ 1,3 J = 8, phần từ có chỉ số dòng bằng chỉ số cột là A [ 1,1 ] = 4. Bởi vậy, sau khi tráo đổi thì giá trị của A [ 1,1 ] = 8, còn A [ 1,3 ] = 4. Vì vậy, dòng thứ nhất sau khi được tráo đổi là : A [ 1,1 ] = 8, A [ 1,2 ] = 6, A [ 1,3 ] = 4 .
Tương tự, ở dòng thứ 2 thì hầu hết nhất của dòng là A [ 2,3 ] = 9 sẽ được tráo đổi với thành phần A [ 2,2 ] = 7. Bởi vậy, sau khi tráo đổi thì giá trị của A [ 2,2 ] = 9, còn A [ 2,3 ] = 7. Vì vậy, dòng thứ hai sau khi được tráo đổi là :
A [ 2,1 ] = 3, A [ 2,2 ] = 9, A [ 2,3 ] = 7 .
ở dòng thứ ba sau khi được tráo đổi là : A [ 3,1 ] = 4, A [ 3,2 ] = 5, A [ 3,3 ] = 9 .
Khi đó, những dòng sau khi được tráo đổi sẽ như sau :
A [ 1,1 ] = 8, A [ 1,2 ] = 6, A [ 1,3 ] = 4
A [ 2,1 ] = 3, A [ 2,2 ] = 9, A [ 2,3 ] = 7
A [ 3,1 ] = 4, A [ 3,2 ] = 5, A [ 3,3 ] = 9
Kết quả chương trình có dạng như hình 68 dưới đây :

Muốn sửa lại chương trình để triển khai đổi chỗ thành phần lớn nhất trên cột với thành phần vừa nằm trên cột đó vừa có chỈ số dòng bằng chỉ số cột thì chì cần hoán đổi vị trí cỦa hai chỉ số trong đoạn thứ hai của chương trình. Điều đó có nghĩa là chỉ đổi i trở thành chỉ số thứ hai, chỉ số thứ hai trở thành chỉ số i trong những câu lệnh có tương quan. Như vậy, chỉ có đoạn thứ hai trong chương trình khác đi và trở thành như sau :
for i : = 1 to N do
begin
Max : = A [ 1, i ], Ind : = 1 ;
for j : = 2 to N do
if A [ i, j ] > Max then begin
Max : – A [ j, i ] ;
Ind : = j ;
end ;
Vsp : = A [ i, i ] ; A [ i, i ] : = Max ; A [ Ind, i ] : = Vsp ;
{ Hoac Vsp : = A [ i, i ], A [ i, i ] : = A [ Ind, i ] ; A [ Ind, i ] : = Vsp ; }
end ;
Do vậy, chương trình tìm trong mỗi cột thành phần lớn nhất rồi đổi chỗ nó với thành phần có chỉ số dòng bằng số cột là như sau :
progran Diag_2 ; var
N, j, Max, Ind, Vsp : integer ;
A : array [ 1 .. 15, 1 … 15 ] of integer ;
Begin
write ( ’ Nhap N : ’ ) ,
readln ( N ) ;
for i : = 1 to N do for j : = 1 to N do
begin
write ( 1 A [ ’, i, .., j, • ] = ’ ) ;
readln ( A [ i, j ] ) ;
end ;
: or i : = 1 to N do begin
Max : = A [ 1, i ] ;
Ind : = 1 ; for j : = 2 to N do
if A [ j, i ] > Max then
begin
Max : = A [ j, i ], Ind : = j ;
end ;
Vsp : = A [ i, i ], A [ i, i ] : = Max ; A [ Ind, i ] : = Vsp ;
{ Hoac Vsp : = A [ i, i ] ; A [ i, i ] : = A [ Ind, i ] ; A [ Ind, i ] : = Vsp ; }
end ;
for i : = 1 to N do
begin
writeln ;
for j : = 1 to N do write ( A [ i, j ] : 3 ) ;
end ;
vriteln
readln
End
A [ 1,1 ] = 4
A [ 1,2 ] = 3
A [ 1,3 ] = 6
A [ 2,1 ] = 9
A [ 2,2 ] = 5
A [ 2,3 ] = 7
A [ 3,1 ] = 5
A [ 3,2 ] = 9
A [ 3,3 ] = 4
Ta nhận thấy rằng, thành phần lớn nhất của cột thứ nhất là 9 và nỏ sẽ tráo đổi với thành phần A [ 1,1 ] = 4. Tương tự, thành phần lớn nhất cùa cột thứ hai là 9 và nó sỗ tráo đổi với thành phần A [ 2, 2 ] = 5. Phần tử lớn nhất cùa cột thứ ba là 7 và nó sẽ tráo đổi với thành phần A [ 3, 3 ] = 4
Như vậy, những thành phần cùa mảng A sau khi đã tráo đổi như sau :
9 3 6
4 9 4
5 5 7
Kết quả chương trình như hình 69 dưới đây :

Câu 10: Viết chương trình nhập vào từ bàn phím xâu kí tự s có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số thập phân xuất hiện trong xâu s. Thông báo kết quả ra màn hình.

Chương trình nhập vào từ bàn phím xâu kí tự s có độ dài không quá 100. Cho biết số chữ số thập phân Open trong xâu s. Thông báo hiệu quả ra màn hình hiển thị .
Chương trình :
program bai_10_chuong_4 ;
uses crt ;
var
s : string [ 100 ] ;
i, dem : integer ;
Begin
clrscr ;
write ( ‘ Nhap xau vao : ’ ) ; readln ( s ) ; dem : = 0 ;
for i : = 1 to length ( s ) do
if ( ‘ 0 ′ < = s [ i ] ) and ( s [ i ] < = ’ 9 ’ ) then dem : = dem + l ; Writeln ( ‘ Trong xau s co ‘ » dem, ’ chu so thap phan ’ ) ; readln ; End . Khi chạy chương trình, giả sử nhập vào xâu s : ’ Tin hoc 11 co 6 chuong ’ thì tác dụng chương trình in ra màn hình hiển thị : ‘ Trong xau s co 3 chu so thap phan ’ . Kết quả chương trình có dạng như hình 70 dưới dây :

Câu 11: Hãy bổ sung thêm chương trình xeploai (ở §13) những lệnh cần thiết để chương trình đưa ra danh sách học sinh xếp loại A.

Chương trình xeploai :
program xEp_loai ;
uses crt ;
const max = 60 ;
type Hocsinh = record
hoten : string [ 30 ] ;
ngaysinh : string [ 10 ] ;
Diachi : string [ 50 ] ;
Toan, Van : real ;
Xeploai : char ;
end ;
var
Lop : array [ 1 .. max ] of hocsinh ;
N, i : byte ;
Begin
clrscr ;
readln ( N )
write ( ‘ So luong hoc sinh trong lop N = ) ;
readln ( N ) ;
for i : = 1 to N do
begin
writeln ( ‘ Nhap so lieu ve hoc sinh thu ’, i, ’ : ‘ ) ;
Write ( ‘ Ho va ten : ‘ ) ; readln ( lop [ i ]. hoten ) ;
Write ( ‘ Ngay sinh : ‘ ) ; readln ( lop [ i ]. ngaysinh ) ;
Write ( ‘ Dia chi : ‘ ) ; readln ( lop [ i ]. Diachi ) ;
Write ( ‘ Diem Toan : ‘ ) ; readln ( lop [ i ]. Toan ) ;
Write ( ‘ Diem Van : ‘ ) ; readln ( lop [ i ]. Van ) ;
If Lop [ i ]. Toan + Lop [ i ]. Van > = 18
then Lop [ i ]. xeploai : = ’ A ’ ;
if ( Lop [ i ]. Toan + Lop [ i ]. Van > = 14 ) and
Lop [ i ]. Toan + Lop [ i ]. Van < 18 then Lop [ i ]. xeploai : = ’ B ’ ; if ( Lop [ i ]. Toan + Lop [ i ]. Van > = 10 ) and
Lop [ i ]. Toan + Lop [ i ]. Van > = 14
then Lop [ i ]. xeploai : = ’ C ’ ;
if ( Lop [ i ]. Toan + Lop [ i ]. Van < = 10 ) and then Lop [ i ]. xeploai : = ’ D ’ ; end ; clrscr ; writeln ( ‘ Danh sach xep loai hoc sinh trong lop : ‘ ) ; for i : = 1 to N do writeln ( Lop [ i ]. Hoten : 30, ’ – Xep loai : ‘, Lop [ i ]. Xeploai ) ; readln End . nhằm mục đích mục tiêu xếp loại ( A, B, c, D ) cho học viên. Để chương trình đưa ra list học viên xếp loại A, thì tất cả chúng ta cần đưa thêm đoạn chương trình sau vào cuối chương trình trên : writeln ( ’ Danh sach hoc sinh xep loai A trong lop : ‘ ) ; for i : = 1 to N do if Lop [ i ]. Xeploai = ’ A ’ then writeln ( Lop [ i ]. Hoten : 30 ) ; Vì vậy, chương trình đưa ra list học viên xếp loại A trong lớp như sau : program xep_loai ; uses crt ; const max = 60 ; type Hocsinh = record hoten : string [ 30 ] ; ngay sinh : string [ 10 ], ề Diachi : string [ 50 ] ; Toan, Van : real ; Xeploai : char ; end ; var Lop : array [ 1 .. max ] of hocsinh ; N, i : byte ; Begin clrscr ; write ( ‘ So luong hoc sinh trong lop N = ’ ) ; readln ( N ) ; for i : = 1 to N do begin writeln ( ‘ Nhap so lieu ve hoc sinh thu ‘, i, ’ : ‘ ) ; write ( ‘ Ho va ten : ‘ ) ; readln ( lop [ i ]. hoten ) ; write ( ’ Ngay sinh : ‘ ) ; readln ( Lop [ i ] ngaysinh ) ; write ( ‘ Dia chi : ’ ) ; readln ( Lop [ i ]. Diachi ) ; write ( ‘ Diem Toan : ‘ ) ; readln ( Lop [ i ]. Toan ) ; write ( ‘ Diem Van : ’ ) ; readln ( Lop [ i ]. Van ) ; if Lop [ i ]. Toan + Lop [ i ]. Van > = 18 then
Lop [ i ]. xeploai : = ’ A ’ ;
if ( Lop [ i ]. Toan + Lop [ i ]. Van > = 14 ) and Lop [ i ]. Toan + Lop [ i ]. Van < 18 ) then Lop [ i ]. Xeploai : = ’ B ’ ; if ( Lop [ i ]. Toan + Lop [ i ]. Van > = 10 ) and ( Lop [ i ]. Toan + Lop [ i ]. Van < 14 ) then Lop [ i ]. Xeploai : = ’ c ’ ; if ( Lop [ i ]. Toan + Lop [ i ]. Van < = 10 ) then Lop [ i ]. xeploai : = ‘ D ’ ; end ; clrser ; W1 iteln ( 1 Danh sach xep loai hoc sinh trong lop : ‘ ) ; fcr i : = 1 to n do writeln ( Lop [ i ]. Hoten : 30, ‘ - Xep loai : ’, Lop [ i ]. Xeploai ) ; writeIn ( ‘ Danh sach hoc sinh xep loai A trong lop : ‘ ) ; ior i : = 1 to N do if Lop [ i ]. Xeploai = ’ A ’ then writeln ( Lop [ i ]. Hoten : 30 ) ; readln

End.

Giả sử ta nhập vào dữ liệu của 5 học viên thì tác dụng của chương trình hiện trên màn hình hiển thị như sau :