Hàm chuẩn random(n) cho giá trị là

Bài tập và thực hành 3 trang 63 SGK 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.

1. Mục đích, yêu cầu

– 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.

2. Nội dung

Bài 1. Tạo mảng A gồm n (n<100) số nguyên, mỗi số có giá trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là hội số của một số nguyên dương k cho trước.

a) Hãy tìm hiểu và chạy thử chương trình sau đây:

program Sum1;

uses crt;

const nmax=100;

type MyArray= array[1..nmax] of integer;

var A: MyArray;

s, n, i, k: 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:=l to n do write (A[i] :5) ; {in ra mang vua tao}

writeln;

write(‘Nhap k = ‘);

readln(k);s: =0;

for i:= 1 to n do

if A[i] mod k = 0 then s:= s+ A[i];

writeln(‘Tong can tinh la: ‘ ,s);

readln

end.

Quảng cáo

Chú ý: Hàm chuẩn random(rt) cho giá trị là sổ nguyên ngẫu nhiên trong khoảng từ 0 đến n-1, còn thủ tục randomize khởi tạo cơ chế sinh số ngẫu nhiên.

b) Hãy đưa các câu lệnh sau đây vào những vị trí cần thiết nhằm sửa đổi chương trình trong câu a) để có được chương trình đưa ra các sổ dương và các số âm trong mảng.

posi, neg: integer;

posi:= 0; neg:= 0;

if A[i]>0 then posi:= posi + 1

else if A[i}

Bài 2: 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 màn hình có chỉ số nhỏ nhất,

a) Hãy tìm hiểu chương trình sau đây:

Program MaxElement;

const Nmax= 100;

type Myarray = array[1..Nmax] of integer;

var A: MyArray;

n, i, j: integer;

Begin

write (‘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;

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) Chỉnh sửa chương trình trên để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất.

Hàm chuẩn random(n) cho giá trị là

Để sinh số ngẫu nhiên trong pascal đầu tiên bạn phải đặt câu lệnh ” randomize; ” ở đầu chương trình. câu lệnh này có chức năng sinh ra số khác với lần sinh trước đó. nếu không có nó bạn sẽ thường xuyên thấy nó giống với lần chạy trước đó. sử dụng sử dụng random: Random(N); { kết quả sẽ trả về là 1 số nguyên trong đoạn từ [0..N-1] }. Như vậy VD nếu bạn muốn sinh ra số ngẫu nhiên trong khoảng [0..25] chẳng hạn thì phải viết như sau:

Begin Randomize; Writeln(Random(26)); Readln End.


và tùy theo bạn muốn ngẫu nhiên trong đoạn nào.

Reactions: kimyen65

Trâm Nguyễn Thị Ngọc said:

Để sinh số ngẫu nhiên trong pascal đầu tiên bạn phải đặt câu lệnh ” randomize; ” ở đầu chương trình. câu lệnh này có chức năng sinh ra số khác với lần sinh trước đó. nếu không có nó bạn sẽ thường xuyên thấy nó giống với lần chạy trước đó. sử dụng sử dụng random: Random(N); { kết quả sẽ trả về là 1 số nguyên trong đoạn từ [0..N-1] }. Như vậy VD nếu bạn muốn sinh ra số ngẫu nhiên trong khoảng [0..25] chẳng hạn thì phải viết như sau:

Begin Randomize; Writeln(Random(26)); Readln End.


và tùy theo bạn muốn ngẫu nhiên trong đoạn nào.

vâng, mình cảm ơn ạ.

Bạn có thể giải thích giúp mình câu lệnh này được không ạ SGK Tin học 11 trang 65 có 2 câu lệnh for j:=N downto 2 do for i:=1 to j-1 do

câu lệnh for i:=1 tp j-1 do nó có ý gì thế bạn, mình đọc mãi mà chẳng thể hiểu nỗi

Hàm chuẩn random(n) cho giá trị là

Bạn có thể giải thích giúp mình câu lệnh này được không ạ SGK Tin học 11 trang 65 có 2 câu lệnh for j:=N downto 2 do for i:=1 to j-1 do

câu lệnh for i:=1 tp j-1 do nó có ý gì thế bạn, mình đọc mãi mà chẳng thể hiểu nỗi

Chị ơi, chị có thể nói với em cái đề bài ko chị, em mới lớp 8 thôi mà chị ghi mỗi câu lệnh thì em không biết giúp thế nào
Hàm chuẩn random(n) cho giá trị là

Reactions: kimyen65

Câu lệnh đó nhầm làm gì mình cũng chẳng hiểu sao, mong bạn xem giúp mình. thank nhiều ạ

Hàm chuẩn random(n) cho giá trị là

Thực chất đây chỉ là 2 vòng lặp đan xen nhau để sắp tăng dần thôi chị ạ. Cái vòng lặp thứ 2 chỉ chạy đến j-1 để giảm thời gian chạy vòng lặp đó chị, nó làm vậy để đã xét phần tử nào rồi thì không cần xét lại nữa, CÁI này người ta đang sắp xếp theo chiều lùi. Nếu chị ko hiểu thì có thể sd CODE sau. Cái này là pp thường dùng của em để sx , nó chạy theo chiều xuôi

For i:=1 to n-1 do For j:=i+1 to n do If a[i]>a[j] then Begin Tg:=a[i]; A[i]:=a[j]; A[j]:=tg; End;

Ở trên em chạy vòng ngoài tới n-1 thôi vì khi chạy tới pt cuối cùng thì cái vòng for dưới nó chạy không được do j:=i+1. Mà i là pt cuối rồi thì sao mà chạy được

Reactions: kimyen65

Trâm Nguyễn Thị Ngọc said:

Thực chất đây chỉ là 2 vòng lặp đan xen nhau để sắp tăng dần thôi chị ạ. Cái vòng lặp thứ 2 chỉ chạy đến j-1 để giảm thời gian chạy vòng lặp đó chị, nó làm vậy để đã xét phần tử nào rồi thì không cần xét lại nữa, CÁI này người ta đang sắp xếp theo chiều lùi. Nếu chị ko hiểu thì có thể sd CODE sau. Cái này là pp thường dùng của em để sx , nó chạy theo chiều xuôi

For i:=1 to n-1 do For j:=i+1 to n do If a[i]>a[j] then Begin Tg:=a[i]; A[i]:=a[j]; A[j]:=tg; End;

Ở trên em chạy vòng ngoài tới n-1 thôi vì khi chạy tới pt cuối cùng thì cái vòng for dưới nó chạy không được do j:=i+1. Mà i là pt cuối rồi thì sao mà chạy được

ok cảm ơn e nhiều nha, quá xuất sắc

câu lệnh gán A[i+1]:=t mình đọc là gán biến t vào A[i+1] hay là gán A[i+1] vào t e ơi

Hàm chuẩn random(n) cho giá trị là

câu lệnh gán A[i+1]:=t mình đọc là gán biến t vào A[i+1] hay là gán A[i+1] vào t e ơi

Đọc là gán giá trị t cho a[i+1] hoặc là a[i+1] gán bằng t vì sau câu lệnh này a[i+1] có giá trị là t, còn nếu chị đọc là ''gán A[i+1] vào t'' thì lúc đó t sẽ nhận giá trị của a[i+1].