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... writeln;.[r]
(1)Giải tập Tin học 11: Bài tập thực hành 4 1 Mục đích, yêu cầu
+ Biết nhận xét, phân tích, đề xuất thuật tốn giải tốn cho chương trình chạy nhanh
+ Làm quen với liệu có cấu trúc toán xếp
2 Nội dung
Bài 1(trang 65 sgk Tin học 11):
a) Hãy tìm hiểu chạy thử chương trình thuật tốn xếp dãy số nguyên thuật toán tráo đổi với giá trị khác n
Qua nhận xét thời gian chạy chương trình
Trả lời:
program sapxep;
uses crt;const Nmax=250; var
N,i,j,t:integer;
A:array[1 Nmax] of integer; begin
clrscr; randomize;
write('nhap so luong phan tu cua day N='); readln(N);
for i:=1 to N begin
A[i]:=random(300)-random(300); end;
for i:=1 to N write(A[i]:5); writeln;
for j:=N downto for i:=1 to j-1
if A[i]>A[i+1] then begin
t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; end;
(2)readln; end
Kết quả
b) Khai báo thêm biến nguyên Dem bổ sung vào chương trình câu lệnh cần thiết để biến Dem tính số lần thực tráo đổi thuật tốn Đưa kết hình
Trả lời:
program sapxep;
uses crt;const Nmax=250; var
N,i,j,t,dem:integer;
A:array[1 Nmax] of integer; begin
clrscr; randomize;
write('nhap so luong phan tu cua day N='); readln(N);
for i:=1 to N begin
A[i]:=random(300)-random(300); end;
dem:=0;
for i:=1 to N write(A[i]:5); writeln;
for j:=N downto for i:=1 to j-1
if A[i] > A[i+1] then begin
t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; dem:=dem+1; end;
(3)writeln;
writeln('so lan thuc hien trao doi la ',dem); readln;
end
Kết quả
Bài (trang 66 sgk Tin 11): Hãy đọc tìm hiểu phân tích để viết chương tình giải tốn :
Cho mảng A gồm n phần tử Hãy biết chương trình tạo mảng B[1 n] B[i] tổng I phần tử A
Trả lời:
Có cách:
Cách duyệt phần từ mảng B Đến vị trí I ta duyệt từ đến I mảng A cộng dồn vào B[i]
Cách ta nhận thấy B[j]=B[j-1]+A[j] j khác 1và B[j]=A[1] j=1
Cách 1:
program sapxep;
uses crt;const Nmax=250; var
N,i,j,t,dem:integer;
A:array[1 Nmax] of integer; B:array[1 Nmax] of integer; begin
clrscr; randomize; dem:=0;
write('nhap so luong phan tu cua day N='); readln(N);
for i:=1 to N begin
A[i]:=random(300)-random(300); B[i]:=0;
(4)for i:=1 to N
for j:=1 to i begin
B[i]:=B[i]+A[j]; dem:=dem+1; end;
writeln('dem=',dem); readln;
end
Kết quả
Số lần thực thi phép cộng là:
Cách 2:
program sapxep;
uses crt;const Nmax=250; var
N,i,j,t,dem:integer;
A:array[1 Nmax] of integer; B:array[1 Nmax] of integer; begin
clrscr; randomize; dem:=0;
write('nhap so luong phan tu cua day N='); readln(N);
for i:=1 to N begin
A[i]:=random(300)-random(300); B[i]:=0;
end;
B[1]:=A[1]; for i:=2 to N
begin
B[i]:=B[i-1]+A[i]; dem:=dem+1; end;
(5)end
Kết quả
Số lần thực thi phép cộng
Nhận thấy sử dụng cách làm giảm đáng kể số lượng phép tốn cần thực Tuy tốc độ máy tính nhanh có giới hạn Vì ta nên tìm cách viết cho chương trình thực phép toán tốt