Giáo án Tin - Thực hành tin

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.

pdf12 trang | Chia sẻ: maiphuongdc | Lượt xem: 1791 | Lượt tải: 2download
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:

  • pdfth4_1629.pdf
Tài liệu liên quan