1
Bài thực hành số 4
Giáo viên hớng dẫn : Thầy Trần Doãn Vinh
Sinh viên thực tập : Phạm Thị Minh Thùy
Lớp K56A_Khoa CNTT_ĐHSP Hà Nội
2
I_Bài 1:
a) Hãy tìm hiểu và chạy thử chơng
trình thực hiện thuật toán sắp xếp dãy số
nguyên bằng thuật toán tráo đổi với các
giá trị khác nhau của n dới đây.Qua đó
nhận xét về thời gian chạy của chơng
trình ?
3
I_Bµi 1:
Uses Crt ;
Const Nmax=250 ;
Type ArrInt =
array[1 Nmax] of integer ;
Var n , i , j , t : integer ;
A : ArrInt ;
BEGIN
ClrScr;
Randomize ;
Write (‘Nhap n = ‘) ;
Readln(n);
For i :=1 to n do
A[i] :=random(300)-
random(300);
For i:=1 to n do
write (A[i] :5) ;
For j:= N downto 2 do
For i:=1 to j – 1 do
If A[i] > A[i+1] then
Begin
d:= d+1 ;
t := A[i] ;
A[i] := A[i+1]
A[i+1] := t ; End ;
Writeln (‘ So lan thuc hien
thuat toan :’,d,’’);
Writeln (‘ Day so duoc sap xep: ‘);
For i:=1 to n do
Write (A[i] : 7);
Write (d);
Writeln;
Readln
End.
7
II_Bài 2:
Hãy đọc và tìm hiểu những phân tích để
viết chơng trình giải bài toán :
Cho mảng A gồm n phần tử . Hãy viết
chơng trình tạo mảng B[1 n], trong đó
B[i] là tổng của i phần tử đầu tiên của A.
8
II_Bµi 2:
Program SubSum1;
For chạy từ 1 đến i , sau đó
cộng dần các A[i] lại với
nhau :
For i :=1 to n do
Begin
B[i] :=0 ;
For j := 1 to i do B[i]
:= B[i]+A[j] ;
10
II_Bài 2:
Ta có hệ thức sau :
B[1]:=A[1] ;
B[i]:=B[i-1]+A[i] , 1<i =< n .
Do đó có đoạn chơng trình khác là :
B[1]:=A[1] ;
For i :=2 to n do B[i]:=B[i-1]+A[i] ;
Với 2 lệnh này máy chỉ phải thực hiện n-1 phép
cộng .
11
Bài tập về nhà :
-Viết chơng trình tìm phần tử có giá trị lớn nhất của
mảng và đa ra màn hình chỉ số và giá trị của phần tử
tìm đợc . Nếu có nhiều phần tử có cùng giá trị lớn
nhất thì đa ra phần tử có chỉ số nhỏ nhất ?
- Hớng dẫn qua : + Xác định dữ liệu vào , dữ liệu ra
?
+ Sử dụng biến j để lu giá trị max
.
12