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

5 17 0
Tải Giải bài tập Tin học 11: Bài tập và thực hành 4 - Bài tập và thực hành 4

Đang tải... (xem toàn văn)

Thông tin tài liệu

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

Ngày đăng: 31/12/2020, 20:28

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan