Bài tập  /  Bài đang cần trả lời

Giải Tin học 11 Bài tập và thực hành 4 - Bài tập và thực hành 4

1 trả lời
Hỏi chi tiết
358
0
0
CenaZero♡
07/04/2018 14:58:46

Bài tập và 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 toán giải bài toán sao cho chương trình chạy nhanh hơn.

+ Làm quen với dữ liệu có cấu trúc và bài toán sắp xếp.

2. Nội dung

Bài 1(trang 65 sgk Tin 11):

a) Hãy tìm hiểu và chạy thử chương trình 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 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 do 	begin 	A[i]:=random(300)-random(300); 	end; 	for i:=1 to N do 	write(A[i]:5); 	writeln; 	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 da duoc sap xep la '); 	for i:=1 to N do write(A[i]:4); 	readln; end. 

Kết quả:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

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ả ra màn 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 do 	begin 	A[i]:=random(300)-random(300); 	end; 	dem:=0; 	for i:=1 to N do 	write(A[i]:5); 	writeln; 	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; 			dem:=dem+1; 			end; 	writeln('day da duoc sap xep la '); 	for i:=1 to N do write(A[i]:4); 	writeln; 	writeln('so lan thuc hien trao doi la ',dem); 	readln; end. 

Kết quả:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Bài 2 (trang 66 sgk Tin 11): Hãy đọc và tìm hiểu những phân tích để viết chương tình giải bài toá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] trong đó B[i] là tổng của I phần tử đầu tiên trong A.

Trả lời:

Có 2 cách:

Cách 1 là duyệt lần lượt các phần từ của mảng B. Đến vị trí I ta sẽ duyệt từ 1 đến I của mảng A rồi cộng dồn vào B[i]

Cách 2 là ta nhận thấy B[j]=B[j-1]+A[j] nếu j khác 1và B[j]=A[1] nếu 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 do 	begin 	A[i]:=random(300)-random(300); 	B[i]:=0; 	end; 	for i:=1 to N do 		for j:=1 to i do 		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à:

Giải bài tập Tin học 11 | Để học tốt Tin học 11

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 do 	begin 	A[i]:=random(300)-random(300); 	B[i]:=0; 	end; 	B[1]:=A[1]; 	for i:=2 to N do 		begin 		B[i]:=B[i-1]+A[i]; 		dem:=dem+1; 		end; 	writeln('dem=',dem); 	readln; end. 

Kết quả:

Số lần thực thi phép cộng là

Giải bài tập Tin học 11 | Để học tốt Tin học 11

Nhận thấy sử dụng cách 2 có thể làm giảm đáng kể số lượng phép toán cần thực hiện. Tuy tốc độ máy tính rất nhanh nhưng cũng có giới hạn. Vì thế ta nên tìm cách viết sao cho chương trình thực hiện càng ít phép toán càng tốt.

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo