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

Thứ sáu - 28/09/2018 04:55
Giải bài tập Tin học 11: Bài tập và thực hành 3
- Nâng cao kỹ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn.
- Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính.
Bài 1: Tạo mảng A gồm n số nguyên (n <100) theo yêu cầu của đề bài ờ trên thì tổng các phần tử (giá trị tuyệt đối của các phần tử không vượt quá 300,) của mảng là bội của một số nguyên k cho trước nghĩa là ta cần tính tổng của các phần tử mà các phần tử này chia hết cho số nguyên k.
a) Sau khi nhập chương trình và cho chương trình chạy và nhập dữ liệu, ta có kết quả như hình 33 dưới đây:

Trong hình ờ trên, số phần tử cần nhập vào là 50. Khi đó, mảng được tạo ra một cách ngẫu nhiên gồm 50 số nguyên có giá trị tuyệt đối không vượt quá 300. Tiếp đến ta nhập vào số k = 9. Ta nhận thấy ràng, trong 50 số được tạo ra thì chỉ các số 45 và 99 là chia hết cho 9 và tổng của chúng bằng 144.
Tương tự như trên, nếu ta nhập n= 99, k= 10 thì kết quả cho như ở hình 34 dưới đây: 

Chúng ta cũng dễ dàng nhận ra rằng, các sổ: -10, -110, -30, 40 và -30 là bội cùa 10 và tổng của chúng bằng -140.

b) Sau khi chương trình ở câu a) đã chạy và cho kết quả tốt, ta thực hiện lệnh File/save để ghi lại chương trình vào máy tính, chẳng hạn với tên tệp btth3_la.doc. Để tiến hành giải bài toán ở câu b) thì ta thực hiện lệnh File/Save as để ghi chương trình sang một tệp khác. Ví dụ, với tên btth3_lb.doc. Sau đó, đưa các câu lệnh
posi, neg: integer;
posi:= 0; neg:= 0;
if A[i]>0 then posi:= posi + 1
else if A[i]
writeln(posi:4, neg:4);


vào chương trình của câu a). Chương trình để in ra số các số dương và số các số âm trong mảng A như sau:
program Sum1;
uses crt, 
const nmax=100;
type Myarray= array[1..nmax] of integer;
var A: MyArray;
n, i: integer; posi, neg: integer;
Begin
clrscr; randomize;
write('Nhap n=') ;
readln(n); {Tao ngau nhien mang gom n so nguyen} for i:=1 to n do A[i]:=random(300)-random(300); for i:=l to n do write(A[i]:5); {in ra mang vua tao} writeln;
posi:= 0; neg:= 0; for i:= 1 to n do
if A[i]>0 then posi:= posi + 1 else if A[i]


Khi chạy chương trình, nhập số phần tử của mảng, ví dụ, n= 10 thì kết quả của chương trình sẽ như hình 35 sau đây:

và kết quả như ở hình 35 thì người sử dụng nhiều khi rất khó nhìn thấy số các số dương và số các số âm. Bời vậy, chúng ta cần đưa vào lệnh in dòng chú thích:
writeln('So cat: so duong la : ',posi: 4) ;
writeln( ' So cac so am la : ', neg: 4);


Khi đó, chương trình in ra số các số dương và số các số âm trong mảng A là:
program Sum1b2;
uses crt;
const nmax= 100;
type Myarray- array[1..Nmax] of integer;
var A: MyArray;
n, i: integer;
posi, neg: integer;
Begin
clrscr; randomize;
write ( ’ Nhap n=' );
readln(n); {Tao ngau nhien mang gom n so nguyen}
for i:=1 to n do A [ i ]: =random (301 )-random ( 301) 
for i:=1 to n do write (A[i] : 5) ,{in ra mang vua tao}
writeln;
posi:= 0; neg:= 0; or i:= 1 to n do if A[i]>0 then posi:= posi + 1
else if A[i]' , posi:4); writeln('So cac so am la : ', neg:4);
readln
End.

Khi chạy chương trình, nhập số phần tử của mảng, ví dụ, n= 50 thì chương trình sẽ đưa ra thông báo:
So cac so duong la: 24 So cac so am la: 26
Kết quả của chương trình sẽ như hình 36 dưới đây:


Bài 2: 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. Khi 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.
a) Sau khi nhập chương trình và cho chương trình chạy và nhập số lượng phần tử của dãy số với n= 10 với giá trị các phần tử như sau:
Phần tử thứ nhất= 5;
Phần tử thứ hai= 9;
Phần tử thứ ba= 4;
Phần tử thứ tư= 8;
Phần tử thứ năm= 6;
Phần tử thứ sáu= 2;
Phần tử thứ bảy= 7;
Phần tử thứ tám= 1;
Phần tử thứ chín= 3;
Phần tử thứ mười= 8;
thì chương trình in ra thông báo: 'Chi so: 2 Gia tri: 9 ' nghĩa là phần tử ở chỉ số 2 có giá trị 9 là phần tử lớn nhất mảng. Khi đó, ta có kết quả như hình 37 dưới đây:
Nhưng khi nhập các phần tử vào mảng mà có nhiều phần tử có cùng giá trị lớn nhất thì kết quả của chương trình số in ra chỉ số nhỏ nhất cùa phần tử lớn nhất. Chẳng hạn, nhập vào 9 phần tử với giá trị các phần tử được nhập vào mảng như sau:
Phần tử thứ nhất= 9;
Phần tử thứ hai= 5;
Phần tử thứ ba= 4;
Phần tử thứ tư= 9;
Phần tử thứ năm= 3;
Phần từ thứ sáu= 9;
Phần tử thứ bảy= 9;
Phần tử thứ tám= 6;
Phần tử thứ chín= 7;
Khi đó chương trình sẽ đưa ra thông báo: "Chi so: 1 Gia tri: 9" như hình 38 dưới đây:

Với kết quả của chương trình hiện ra như ở hình 38 thì chỉ số nhỏ nhất của phần tử lớn nhất bằng 9) là 1.
Lưu ý: Trong chương trình chúng ta nên đưa vào khai báo chuẩn uses crt; và lệnh xóa màn hình clrscr; để mỗi lần chạy chương trình các kết quả trước đó bị xóa:
Khi đó chương trình sẽ là:
Program MaxElement;
uses crt;
const Nmax= 100;
type Myarray = array[1ắ.Nmax] of integer;
var i: MyArray;
r, i, j: integer;
Begin
Clrscr ;
wiite('Nhap so luong phan tu cua day so, N= ');
readln(N);
for i:= 1 to N do begin
write('Phan tu thu ', i,'=');
readln(A[i]);
end
j : = 1 ;
for i:= 1 to n do if A[i]>A[j] then j:= i;
write('Chi so: ',j,'Gia tri: ',A[j]: 4);
readln
End.


b) Sau khi chương trình ở câu a) đã chạy và cho kết quả tốt, ta thực hiện lệnh File Save để ghi lại chương trình vào máy tính, chẳng hạn với tên tệp btth3_2a.doc. Để tiến hành giải bài toán ở câu b) thì ta thực hiện lệnh File/Save as để ghi chương trình san; một tệp khác. Ví dụ, với tên btth3_2b.doc. Sau đó, ta chỉnh sửa chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất, bằng cách ta đưa vào chương trình biến mảng dem. Chương trình như sau:
Program MaxElement.2 ;
const Nmax= 100;
type Myarray = array[1..Nmax] of integer;
var A: Myarray;
dem: array[1..Nmax] of integer;
n, k, i, j: integer;
Begin
write('Nhap so luong phan tu cua day so, N= ' );
readln(N); for ỉ:= 1 to n do
begin
write('Phan tu thu i ,' = ');
readln(A[i]); end; j : = 1; k: = 0 ;
for i:= 2 to n do if A[i] > A[j] then j:= i; dem[k]:= j;
for i:= 1 to n do if a[i] = a[j] then
begin
k: = k + 1 , dem[k]:= i;
end;
writeln('Gia tri lon nhat la: A[j]:4);
writeln('Chi so ung voi gia tri lon nhat la: '));
for i:= 1 to k do write('dem[i]);
writeln;
readln;
End

Khi cho chương trình chạy và nhập số lượng phần tử của dãy số với n= 5. Giả sử, giá trị các phần tử được nhập vào như sau:
Phần tử thứ nhất= 4;
Phần tử thứ hai= 7;
Phần tử thứ ba= 9;
Phần tử thứ tư= 5;
Phần tử thử năm= 9;
Khi đó chương trình sẽ đưa ra thông báo:
Gia tri lon nhat la: 9 Chi so ung voi gia tri lon nhat la:
3 5
Kết quả của chương trình như hình 39 dưới đây:
Bản quyền bài viết thuộc về Sachgiai.com. Ghi nguồn Sách giải.com khi đăng lại bài viết này.

  Ý kiến bạn đọc

THÀNH VIÊN

Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Kênh Bóng đá trực tiếp hôm nay miễn phí
Kênh
90Phut TV full HD ⇔ 32win
69VN ⇔ 78 WIN ⇔ F168 ⇔ 123b

Vmax ⇔ 78Win ⇔ https://xn88.bio/
789f ⇔ SHBET ⇔ nh88 ⇔ x88 ⇔ 789f
fo88vic88 ⇔ x88 ⇔ win678 ⇔ 69vn
BL555 ⇔ Kkwin ⇔ KJC ⇔ Link MB66
mv66af88 ⇔ 8x bet ⇔ iWinClub
789BET ⇔  ⇔ BL555 ⇔ 58WIN
OKFUN ⇔ 789F ⇔ MB66 ⇔ 8xbet
https://789betcom0.com/ ⇔ https://hi88.baby/
UU88 ⇔ 86bet ⇔ win678 ⇔ SHBET
zo88 ⇔ ev99 ⇔ 888b ⇔ go88 ⇔ kèo nhà cái
Kubet11 ⇔ topbet ⇔ v8club ⇔ tv88 ⇔ 77win
MB66 ⇔ u888 ⇔ FO88 ⇔ Sanclub
188v ⇔ f168 ⇔ QQ88 ⇔ bk8 ⇔ bk8
789club ⇔ iwinclub ⇔ Subnhanh ⇔ Bluphim
vua88 ⇔ Nettruyenviet ⇔ P3 ⇔ 8s
vn23 ⇔  ⇔ kubet ⇔ 888new
NOHU ⇔ hi88 ⇔ https://fun88.social/
88clb ⇔  ⇔ https://vnalo789c.com/
https://qq88.fun/ ⇔ f168 ⇔ 888New ⇔ QQ88
daga ⇔ SHBET ⇔ keo nha cai ⇔ bl-555.site
https://bshbet.com/ ⇔ https://uk88.rocks
BJ88 ⇔ 789f ⇔ mm88 ⇔ RR88 ⇔ 78WIN
https://nohu90.ad/ ⇔ https://hello8880.net/
tv88hi88 ⇔ f168 ⇔ uu88 ⇔ 33win
NOHU ⇔ hi88com ⇔ 32win ⇔ Kuwin
ek333 ⇔ xoso66 ⇔ nổ hũ ⇔ SUN WIN
Fun88 ⇔ https://f168.com.co/ ⇔ 28Bet
NOHU ⇔ KINGFUN ⇔ https://789club24.com/
https://98winlive.com/ ⇔ https://789win.voyage/
https://bet88yk.com/ ⇔ https://alo789apk.app/
https://33win100.com/ ⇔ Cổng game rikvip
69vn ⇔ vn88 ⇔ https://king88com.uk.net/
https://j88usd.com/ ⇔ https://okwin.technology/
game bài đổi thưởng ⇔ https://hello880.net/
https://789club60.com/ ⇔ 
23win ⇔ 6ff ⇔ f168 ⇔ nohu90 ⇔ onbet
nhatvip ⇔ https://789club24.com/ ⇔ 789 bet
win68 ⇔ 8xbet ⇔ go99 ⇔ 78win ⇔ 
XX88 ⇔  ⇔ QQ88 ⇔ topbet
Uu88 ⇔  ⇔ 78win ⇔ lương sơn tv
https://33win101.com/ ⇔ oxbet ⇔ Min88
78win ⇔ https://shbet.gg/ ⇔ XX88
daga ⇔ SV388 ⇔ 77ball ⇔ ee88 ⇔ 
SHBET ⇔ Kkwin ⇔  ⇔ Hay 88
https://shbet.solar/ ⇔ https://58winbank.com/
EE88 ⇔ 77BET ⇔ 12BET
vmaxVMAX ⇔ ok9 football ⇔ K8CC
nhà cái uy tín ⇔ https://hi88.gives/
https://qq88.co.com/ ⇔ https://f168.law/
game bài đổi thưởng ⇔ alo88 ⇔ vwin ⇔ sut88
https://mm88login.com/ ⇔ 79king
ww88 ⇔  ⇔ https://13win.vegas/
game bài đổi thưởng ⇔ https://hi88.uno/
https://58win1.info/ ⇔ j88 ⇔ j88 ⇔ 69vn
bl555.com ⇔ 78 win ⇔ 789f ⇔ go 88
MM88 ⇔ Nh88 ⇔ 73bet ⇔ S666
11uu ⇔ 123B ⇔ 78win ⇔ 888win
https://xx88.ink/ ⇔ mv88 ⇔ YO88 ⇔ QQ88
789win ⇔ Bet88 ⇔ Vmax ⇔ Sun Win
tỷ lệ kèo nhà cái hôm nay ⇔ BIN88
https://j88.ventures/ ⇔ https://qq88.studio/
https://nh8811.com/ ⇔ Leo88
88CLB ⇔ SV388 ⇔ https://cakhiatv88.net/
7m ⇔ i9 Bet ⇔ Tv88 ⇔ hi88 ⇔ F8BET
socolive trực tiếp74bet ⇔ VN168
Bong88 ⇔ socolive ⇔ Sao789 ⇔ ok365
https://au88.black/ ⇔ trực tiếp bóng đá
https://king88clb.com/ ⇔ nohu90 ⇔ kingfun
sv66nhà cái thabet ⇔ bong88 ⇔ Nn88
https://32win.vc/ ⇔ 888new ⇔ PG88 ⇔ PG88
EE88 ⇔ B52Club ⇔ B52 Club ⇔ lô đề hôm nay
sky88 ⇔ Vin777 ⇔ SV388 ⇔ MV66 ⇔ 32win
https://vankhanhtvv.com/ ⇔ game bài đổi thưởng
game bài đổi thưởng ⇔ https://u888lm.com/
https://sv66.coupons/ ⇔ https://f168.tech/
https://8kbetbh.com/ ⇔ https://ta88club.kim/
 ⇔ https://rr88.com.se/
Game bài đổi thưởng ⇔ tỷ lệ bóng đá
https://58win.jpn.com/ ⇔ https://xin88.sa.com/
https://qq88.photo/ ⇔ https://79king1.best
lô đề online ⇔ https://78winvina.com/
for88 ⇔ https://shbetasia.com/ ⇔ Bet88
https://888b-link.cc/ ⇔ https://sunwinn.deal/
https://sunwinn.team/ ⇔ https://bong88vn.wiki/
https://mb66az.com/ ⇔ https://shbet.racing/
789f ⇔ 88i ⇔ https://new88blog.org/
Jun88 ⇔ Jun88 ⇔ jun88 ⇔ 67bet
MM88 ⇔ https://789betw.co/ ⇔ UU88
https://qq887p.com/ ⇔ https://w88link1.com/
xocdia88 ⇔ 77ball ⇔ vuabet88 ⇔ betvisa
https://789freal.com/ ⇔ https://2789f.com/
https://fun88link0.com/ ⇔ https://fun88link1.com/
https://188betlink0.com/ ⇔ https://188betlink1.com/
https://188betlink2.com/ ⇔ https://w88link0.com/
thabet ⇔ 32WIN ⇔ J88 ⇔ ax88 ⇔ 789F
QQ88 COM ⇔ https://xx88.sale/ ⇔ 78win
https://bet88.pictures/ ⇔ https://xo88.group/
https://86bet.tech/ ⇔ https://nohu90.consulting/
789BET ⇔ https://i9betz4.com/ ⇔ đá gà 88
w88link2.com ⇔ w88link3.com ⇔ luck8
https://8dayvip.mobi/ ⇔ https://8dayvip.com/
QQ88 Com ⇔ af88 ⇔ https://79kingsr.com/
https://pg99yk.com/ ⇔  hm88.com ⇔ J88
https://luongson161.tv/ ⇔ 78WIN ⇔ MB66
78win ⇔ U888 ⇔ nn88 ⇔ 99win ⇔ hi88
https://8kbettt.com/ ⇔ https://hi88.biz/
https://thabetcasino.us.com/ ⇔ 789Win ⇔ vn88
https://hello88net.com/ ⇔ https://pg88.jpn.com/
https://az8888.org/ ⇔ https://fly88.gifts/
lc88 ⇔ VN88 ⇔ 69vn ⇔ nh88 ⇔ vn88
https://go800s.com/ ⇔ 888newport.com
tỷ lệ kèo nhà cái 88 ⇔ PG66 ⇔ 68win
BL555 ⇔ 23win ⇔ SV388 ⇔ SHBET ⇔ vua88
Game bài đổi thưởng ⇔ https://saobet.shop/
https://99ok99ok.com/ ⇔ hb88 ⇔ HM88
https://bet88.ventures/ ⇔ bongdalu22.com
zx88 ⇔ ev99 ⇔ 8s ⇔ bet8s ⇔
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây