Tải bản đầy đủ (.pdf) (12 trang)

BÀI THỰC HÀNH TIN HỌC SỐ 4 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.93 MB, 12 trang )

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) ;


Writeln ;
4
I_Bµi 1:
For j := N downto 2 do
For i :=1 to j – 1 do
If A[i] > A[i+1] then
Begin
t :=A[i];
A[i] := A[i+1];
A[i+1] := t ;
End ;
Writeln (‘ Day so duoc
sap xep : ‘) ;
For i := 1 to n do
Write (A[i] :7 );
Writeln ;
Readln
END.
5
I_Bài 1:
b) Khai báo thêm biến nguyên Dem và
bổ sung vào chơng trình những câu lệnh
cần thiết để biến Dem tính số lần thực
hiện tráo đổi trong thuật toán .Đa kết quả
tìm đợc ra màn hình .
6
I_Bµi 1:
+ Khai b¸o : n , i , j ,t , d :integer ;
+ Bæ sung ch¬ng tr×nh :
d :=0 ;

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;

Const max=100;
Type
MyArray=array[1 max]
of integer;
Var A , B : MyArray;
n , i , j : integer ;
Begin
Radomize;
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);
Writeln ;
9
II_Bài 2:
For i :=1 to n do
Begin
B[i]:=0;
For j :=1 to i do
B[i]:=B[i]+A[j];
End ;
For i :=1 to n do write (B[i]
:6);
Readln
End.
Ta tạo các phần tử thứ i của
mảng B bằng cách cho vòng

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


Xin c¶m ¬n c¸c b¹n


®· theo dâi !

×