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.
12 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1883 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Giáo án Tin - Thực hành tin, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 !
Các file đính kèm theo tài liệu này:
- th4_1629.pdf