1. Đề bài về hàm random pascal
Em hãy khai báo một mảng có 1000 phần tử, có giá trị từ [0..1000]. Tạo mảng ngẫu nhiên gồm N (N<=1000) phần tử.
2. Yêu cầu
- Xuất ra các số chẳn trên 1 dòng
- Đưa ra số chẳn lớn nhất
3. Code mẫu tham khảo
Lưu ý đây chỉ là bài tập vận dụng, để xem lại lý thuyết vui lòng xem tại đây https://kienthuc24h.com/ham-random-sinh-ngau-nhien-trong-pascal/
program bai1; var A:array[1..1000] of word; i,n:word; max:integer; begin randomize; writeln('So phan tu N = '); read(n); max:=-1; // neu sau khi chay dong for ma max van la -1 thi trong mang ko co so nao la so chan for i:=1 to n do begin a[i]:=random(1001); if a[i] mod 2=0 then begin write(a[i],' '); if a[i]>max then max:=a[i]; end; end; writeln; if max=-1 then writeln('Khong co so chan nao') else writeln('So chan lon nhat la ',max); readln; end.
Bạn code giúp mình đoạn chương trình sinh ngẫu nhiên N số nguyên tố khác nhau trong đoạn [a,b]
muốn lấy một số ngẫu nhiên mà loại trừ số 2 thì sao hả ah?
Bạn sử dụng vòng lặp repeat until nha.
repeat
x:= random(1001) // 0-1000
if (x<>2) break;
until (false);
Vòng lặp trên sẽ chạy đến khi x khác 2 và khi thỏa mãn, giá trị random của bạn là x
thank ah 😀
b giải thích với, câu lệnh trên chứa until (false); là sao?
tại sao max ở đây lại là -1 vậy; mấy phần khác lại cho max la 1. giải thích hộ e vs
Em để ý đề nha, các phần tử có giá trị từ [0..1000], như vậy ban đầu mình khởi tạo 1 số không có trong đoạn đó và nhỏ nhất, thì khi xét 1 số, miễn nó chia hết cho 2 thì em cứ cập nhật max. như vậy khi sau 1 lượt xét mà vẫn là -1 thì rõ ràng không có số nào hợp lệ rồi.