PDA

View Full Version : các câu lệnh trong pascal



h2vn_com_anhtuan
14-06-2009, 21:47
em muốn bít thêm những câu lệnh trong pascal (ko có trong sgk)và ý nghĩa của nó, ai giúp dc ko ạ
giải thích cho em một số câu lệnh như và viết lại dạng đầy đủ nha
1/fillchar(...
2/sizeof(...
3/dure , eat, il, te, le
(mấy cái này em đọc trong một số bài giải mà ko hỉu )

em đang cần tìm đề thi tin học trẻ ko chuyên những năm gần đây khối THPT ai có post lên cho em với, cả những bài tập khó nữa (em tìm google rùi, ai có thêm post lên nha )

nhat_truong
14-06-2009, 23:53
1. Procedure Fillchar(var x; count: Word; value);
----> Lấp 1 vùng liên tục (chỉ bởi x) rộng Count byte trong bộ nhớ bằng giá trị Value(có thể là ký tự hoặc byte).

2. Function SizeOf(Var V):Word;
----> Kích thước (tính theo byte) của biến V (hoặc kiểu).

Fillchar thường đi chung với SizeOf.
VD:
Var A:Array[1..10]of integer; {A là mảng số nguyên}
Khi đó : Fillchar(A,sizeof(A),1); {Gán các phần tử trong mảng A giá trị 1}

3. Chưa từng thấy mấy thủ tục này. Bạn lấy đâu ra vậy

Chúc bạn học giỏi

h2vn_com_anhtuan
15-06-2009, 10:05
mấy câu lệnh sau em tìm thấy ở bài giải chương trình tính phân tử khối của công thức hóa học, em kiểm tra rùi nhưng ko báo lỗi, chạy tốt
ko hỉu ý nghĩa của nó nữa ,anh giúp với ạ

ghostknight
15-06-2009, 12:48
Bạn học lớp mầy rồi?Mình năm nay lên 12,cũng chuẩn bị thi tin học k chuyên nè. hôm qua ông thầy phụ trách đội tuyển tin của trường gọi điện bảo là ổng đăng ký rồi cuối tháng này đi thi tin học trẻ k chuyên :( trong khi mình quên sạch rồi còn đâu

nhat_truong
15-06-2009, 15:23
Mình mới tức chết nè
Năm lớp 10 ông thầy bảo mình đọc trước tin 11 đi rồi ổng cho thi tin học trẻ không chuyên
Mình gắng sức mài dùi kinh sử, cuối cùng ko được thi chỉ vì... thầy hiệu trưởng quên thông báo
Thế có tức không chứ

dinhlamduc
15-06-2009, 15:57
Em mới học lớp 8 thôi. Em cũng đi thi tin học trẻ kô chuyên khối THCS, thành phố Quy Nhơn, thi về Pascal. Mong các anh giúp đỡ.

h2vn_com_anhtuan
15-06-2009, 21:31
cho em hỏi ý nghĩa câu lệnh exit, break
mấy câu lệnh ở mục 3 em post ở trên sai nha, do máy bị virut lấp màn hình

ai có đề tin học trẻ không chuyên post lên nha, em sắp thi rùi mà còn mù mờ wa', những câu lệnh nào ko có trong sgk mà thi hay cần các anh chỉ giáo

hang_vt
15-06-2009, 21:43
cho em hỏi ý nghĩa câu lệnh exit, break
mấy câu lệnh ở mục 3 em post ở trên sai nha, do máy bị virut lấp màn hình

ai có đề tin học trẻ không chuyên post lên nha, em sắp thi rùi mà còn mù mờ wa', những câu lệnh nào ko có trong sgk mà thi hay cần các anh chỉ giáo
exit : thoát khỏi phần chương trình chính ( nếu câu lệnh trong ct chính ) , ct con ( nếu câu lệnh trong ct con )
break : thoát khỏi vòng lặp

Đề THT k chuyên BRVT năm 2008 bảng B ( nhớ có 1 câu àh ( có 2 câu tất cả ) ) : tìm all số siêu nguyên tố từ 1->10^8

h2vn_com_anhtuan
16-06-2009, 09:17
số siêu nguyên tố là gì vậy

hang_vt
16-06-2009, 09:28
Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố.
Ví dụ 5371 là một số siêu nguyên tố có 4 chữ số vì 537, 53, 5 cũng là các số nguyên tố.

p/s : bảng B ấy nhá =.=!

nhat_truong
16-06-2009, 12:09
Mình có ý tưởng thế này, nhưng không biết có chạy nỗi với dữ liệu lớn không.
Các bạn xem rồi cho nhận xét nhé

B1: Viết 1 hàm kiểm tra snt
B2: Viết hàm kiểm tra số siêu nguyên tố:
-----Lần lượt lấy div của số đó với 10. Kt số nhận được có là số nt.
B3: Cho chạy từ 1 đến 10^8, nếu là số snt thì in ra

lqhuy93
16-06-2009, 19:44
Dùng sàng nguyên tố Sàng nguyên tố Eratosten hoặc Atkin. 10^8 có thể dưới 2s

hang_vt
16-06-2009, 20:04
Mình có ý tưởng thế này, nhưng không biết có chạy nỗi với dữ liệu lớn không.
Các bạn xem rồi cho nhận xét nhé

B1: Viết 1 hàm kiểm tra snt
B2: Viết hàm kiểm tra số siêu nguyên tố:
-----Lần lượt lấy div của số đó với 10. Kt số nhận được có là số nt.
B3: Cho chạy từ 1 đến 10^8, nếu là số snt thì in ra
k ổn =.=! , ct sẽ chạy rất lâu
for i:=1 to 100000000 do ( chỉ cần câu lệnh này thôi , ct đã chạy rất lâu , chưa kể còn phải kt số siêu nguyên tố lồng trong đó là kt số nguyên tố nữa )

[=========> Bổ sung bài viết <=========]


Dùng sàng nguyên tố Sàng nguyên tố Eratosten hoặc Atkin. 10^8 có thể dưới 2s
cách nì khả quan hơn :)

h2vn_com_anhtuan
16-06-2009, 20:47
vấn đề của bài này là số quá lớn, em đã làm thử nhưng chỉ được tới 5 chữ số thui, lớn hơn thì rất lâu

bạn nào giới thiệu các dùng sàng số nt dc ko

em đang rất cần đề tin học trẻ ko chuyên bảng C, ai có post lên giùm với thứ 5 tuần này em thi rùi

hang_vt
16-06-2009, 21:19
vấn đề của bài này là số quá lớn, em đã làm thử nhưng chỉ được tới 5 chữ số thui, lớn hơn thì rất lâu

bạn nào giới thiệu các dùng sàng số nt dc ko

em đang rất cần đề tin học trẻ ko chuyên bảng C, ai có post lên giùm với thứ 5 tuần này em thi rùi
hì hì , thì làm bảng B đi đã ( đề tỉnh BR-VT -2008 )
sàng nguyên tố : chạy từ 1 -> 10^8 số nào là nguyên tố thì lưu và đánh dấu bội của số đó k phải là số nguyên tố ( đến số đó thì k cần kt nữa ) -> chạy nhanh hơn

nhat_truong
16-06-2009, 23:38
Ai giúp mình với, máy mình dạo này lạ lắm
Mình khai báo: P:Array[1..max]of Boolean;
Nếu max>=10^5 thì máy báo lỗi: Ordinal type expected
Chả biết đó là lỗi gì, nhưng mình nghĩ đó không phải là lỗi tràn số

[=========> Bổ sung bài viết <=========]

Mình thử làm theo cách dùng sàng gì đó nhé:


Program so_snt;
Uses crt;
Const max = 10000;
Var P: Array[1..max] of Boolean; {P[i]=false n?u i không th? là s? siêu nguyên t?}
i,j: Longint;

Function ktnt(n:Longint): Boolean;
Var i: Longint;
Begin
ktnt:=False;
For i:=2 to trunc(sqrt(n)) do
If n mod i = 0 then exit;
ktnt:=true;
End;

Function ktsnt(n:Longint): Boolean;
Begin
ktsnt:=False;
While n>0 do
If ktnt(n) then n:=n div 10
Else exit;
ktsnt:=True;
End;

BEGIN
Clrscr;
Writeln('Cac so sieu nguyen to < 10^4: ');
Fillchar(P,sizeof(P),True);
For i:=2 to max do
If P[i] and ktsnt(i) then
Begin
Write(i:8);
j:=i;
While j<=max do
Begin
P[j]:=False; {Ðánh d?u các u?c c?a i không th? là ssnt}
inc(j,i);
End;
End;
Readln
END.

qhuyqhuy
21-06-2009, 09:04
Function ktsnt(n:Longint): Boolean;
Begin
ktsnt:=False;
While n>10 do
If ktnt(n) then n:=n div 10
Else exit;
ktsnt:=True;
End;



Bạn h2vn_com_anhtuan thi rồi post bài lên cho mình và các bạn # tham khảo đc k?

nhat_truong
23-06-2009, 11:39
Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố.
Ví dụ 5371 là một số siêu nguyên tố có 4 chữ số vì 537, 53, 5 cũng là các số nguyên tố.

p/s : bảng B ấy nhá =.=!

Đính chính: 537 không là số nguyên tố

[=========> Bổ sung bài viết <=========]


Bạn h2vn_com_anhtuan thi rồi post bài lên cho mình và các bạn # tham khảo đc k?

Được gửi bởi nhat_truong



Function ktsnt(n:Longint): Boolean;
Begin
ktsnt:=False;
While n>10 do
If ktnt(n) then n:=n div 10
Else exit;
ktsnt:=True;
End;


Bài của mình để n>0 là đúng rồi, sao bạn lại sửa thành n>10.
Test thử đi, VD: 41 không là số siêu nguyên tố, nhưng ct của bạn lại in ra

bld
24-06-2009, 08:05
bài thi của tp mình :
có n cái bánh n<100 , m cái túi m<n , hãy in ra tất cả cách chia n cái bánh vào m cái túi sao cho số bánh trong mỗi túi khác 0 và khác nhau , đếm xem có bao nhiều cách chia
đó là bài 2 , 2 bài kia không khó :)

ghostknight
25-06-2009, 16:42
mọi người cho mình hỏi, mình xem mấy bài giải trong bộ đề pascal của mình thì thấy có 1 đoạn là :

procedure nhap(ch:char;var spt:byte);
begin
repeat
write('nhap so phan tu cua mang',ch,':');
{$I-}readln(spt);{$I+}
until (IoResult=0) and (spt>0) and (spt<max);
end;
ai nói cho mình ý nghĩa của câu lệnh IoResult=0 là j dc k?mà trong toàn bộ bài giải cũng k thấy khai báo 1 biến nào gọi là IoResult cả

bld
25-06-2009, 19:57
IO result có thể là kiểm tra kí tự nhập vào có thể hiển thị không .. cũng không chắc nữa , nếu nhà bạn dùng tb thì nên vào phần help , nói rất rõ

_gio_
09-06-2011, 07:14
co ai bit lenh pos la j ko?

[=========> Bổ sung bài viết <=========]

guip minh nhe thank nhieu

auauau97
09-06-2011, 08:45
co ai bit lenh pos la j ko?

[=========> Bổ sung bài viết <=========]

guip minh nhe thank nhieu
Đây này bạn !

Hàm Pos(S, St):

Cho vị trí đầu tiên tìm thấy chuỗi S trong chuỗi St, nếu không tìm thấy thì hàm cho kết qủa bằng 0.

Ví dụ:

Pos(‘Ab’, ‘cdAb3Abm’) = 3,

Pos(‘Ab’, ‘1bA3b’) = 0.