Tin học Pascal

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Tính số các số nguyên tố nhỏ hơn n.
Mời các anh chị em xem hộ là em làm sai chỗ nào?(Em còn non lắm ạ.:D)
var i,n,s,dem:int64;
Begin
Assign(input,'sonto2.inp');reset(input);
Assign(output,'sonto2.out');rewrite(output);
Readln(n);
s:=0;
Begin
dem:=2;
i:=2;
While i<=trunc(sqrt(n-1)) do
Begin
If n-1 mod i=0 then inc(dem,2);
Inc(i,1);
End;
If frac(sqrt(n-1))=0 then dec(dem,1);
For i:=2 to n-1 do
If dem=2 then inc(s,1);
End;
Writeln(s);
End.
Ai có cách gì xin chia sẻ với.
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Tính số các số nguyên tố nhỏ hơn n.
Mời các anh chị em xem hộ là em làm sai chỗ nào?(Em còn non lắm ạ.:D)
var i,n,s,dem:int64;
Begin
Assign(input,'sonto2.inp');reset(input);
Assign(output,'sonto2.out');rewrite(output);
Readln(n);
s:=0;
Begin
dem:=2;
i:=2;
While i<=trunc(sqrt(n-1)) do
Begin
If n-1 mod i=0 then inc(dem,2);
Inc(i,1);
End;
If frac(sqrt(n-1))=0 then dec(dem,1);
For i:=2 to n-1 do
If dem=2 then inc(s,1);
End;
Writeln(s);
End.
Ai có cách gì xin chia sẻ với.
Bạn chụp ảnh mình xem với
Code của bạn sd các hàm trunc,frac nhiều nhỉ, mà mình thì không thích nó nên mình làm theo cách này:
Nhưng mà làm theo cách bn cũng không sai đâu, bn chụp ảnh rồi nói cách làm của bn để mình xem sao, nếu giúp đc thì mình sẽ giúp
 

Attachments

  • 20190424_115908.jpg
    20190424_115908.jpg
    41.7 KB · Đọc: 64
Last edited:

iceghost

Cựu Mod Toán
Thành viên
TV BQT xuất sắc nhất 2016
20 Tháng chín 2013
5,018
7,484
941
TP Hồ Chí Minh
Đại học Bách Khoa TPHCM
Tính số các số nguyên tố nhỏ hơn n.
Mời các anh chị em xem hộ là em làm sai chỗ nào?(Em còn non lắm ạ.:D)
var i,n,s,dem:int64;
Begin
Assign(input,'sonto2.inp');reset(input);
Assign(output,'sonto2.out');rewrite(output);
Readln(n);
s:=0;
Begin
dem:=2;
i:=2;
While i<=trunc(sqrt(n-1)) do
Begin
If n-1 mod i=0 then inc(dem,2);
Inc(i,1);
End;
If frac(sqrt(n-1))=0 then dec(dem,1);
For i:=2 to n-1 do
If dem=2 then inc(s,1);
End;
Writeln(s);
End.
Ai có cách gì xin chia sẻ với.
Sai? Hẳn là quên close().
 

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
Bạn chụp ảnh mình xem với
Code của bạn sd các hàm trunc,frac nhiều nhỉ, mà mình thì không thích nó nên mình làm theo cách này:
Nhưng mà làm theo cách bn cũng không sai đâu, bn chụp ảnh rồi nói cách làm của bn để mình xem sao, nếu giúp đc thì mình sẽ giúp
Mã bài làm của mình đó bạn.
Test trong free pascal thì là sai.

Bạn chụp ảnh mình xem với
Code của bạn sd các hàm trunc,frac nhiều nhỉ, mà mình thì không thích nó nên mình làm theo cách này:
Nhưng mà làm theo cách bn cũng không sai đâu, bn chụp ảnh rồi nói cách làm của bn để mình xem sao, nếu giúp đc thì mình sẽ giúp
Bạn ơi vui lòng làm theo chương trình lớp 8 được không? Các câu lệnh lặp,điều kiện cũng được.
 
Last edited by a moderator:

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Bạn ơi vui lòng làm theo chương trình lớp 8 được không? Các câu lệnh lặp,điều kiện cũng được.
Cái đó lớp 7 mà bạn, nếu bn học pascal rồi thì không có gì mới cả, có mỗi cái nhập dữ liệu từ file text là của 11 nhưng mình thấy bn học rồi mà
 

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
Mã của mình đó bạn.Minh test thử trong "Free Pascal" thì nó sai.
Cái đó lớp 7 mà bạn, nếu bn học pascal rồi thì không có gì mới cả, có mỗi cái nhập dữ liệu từ file text là của 11 nhưng mình thấy bn học rồi mà
Mình học lớp 7.Chưa học một tí gì cơ bản Pascal 8 nhưng lại thi vượt cấp nên ..........
Giúp mình đi.:(:(:(
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Mình học lớp 7.Chưa học một tí gì cơ bản Pascal 8 nhưng lại thi vượt cấp nên ..........
Giúp mình đi.:(:(:(
Mình biết nhưng ý bn là sao nhỉ, bn không hiểu gì cơ, mà bn học pascal rồi mà, cái code mình viết có gì mới hay làm bn khó hiểu à bn
 

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
Mình biết nhưng ý bn là sao nhỉ, bn không hiểu gì cơ, mà bn học pascal rồi mà, cái code mình viết có gì mới hay làm bn khó hiểu à bn
Boolean là gì?
h?fo?(biết là biến nhưng đặt dễ hiểu hơn cái).Nếu có ý nghĩa thì bảo mình.
Break dùng khi nào? Cả Close cũng vậy.
Mình hỏi thêm là " exid " dùng khi nào?
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Boolean là gì?
h?fo?(biết là biến nhưng đặt dễ hiểu hơn cái).Nếu có ý nghĩa thì bảo mình.
Break dùng khi nào? Cả Close cũng vậy.
Mình hỏi thêm là " exid " dùng khi nào?
Boolean là kiểu dữ liệu có miền giá trị là true hoặc for, mình sd để KT xem nó có phải số NT không
Fi,fo chẳng qua là cái tên mình đặt cho tệp inp và out thôi, mình thấy bài bạn có sd input và output nên mình nghĩ bn học rồi chứ
break là lệnh thoát khỏi vòng lặp ngay lập tức thôi, có cũng đc mà không thì cũng không sai đâu
Close là lệnh đóng tệp sau khi làm xong
Exid thì mình chưa gặp

Mấy cái này trừ cái file text thì năm lớp 7 mình cũng học rồi, đều là kiến thức pascal bt thôi đó bn
Nếu như này mà bn ko hiểu thì nói với mình, mình làm cách ko có boolean hay break cho bn
 
  • Like
Reactions: Deathheart

Deathheart

Cựu TMod Vật Lí
Thành viên
18 Tháng năm 2018
1,535
2,868
411
Quảng Trị
THPT Đông Hà
Boolean là gì?
h?fo?(biết là biến nhưng đặt dễ hiểu hơn cái).Nếu có ý nghĩa thì bảo mình.
Break dùng khi nào? Cả Close cũng vậy.
Mình hỏi thêm là " exid " dùng khi nào?
chào bạn, boolean là điều kiện đúng sai nha
VD: khi ta khai báo kt:boolean tại var ta được
+ kt chỉ nhận 2 giá trị là true hoặc false
+ ta có thể dùng lại cái này cho đoạn sau như
if kt then write(a);
câu trên tức là nếu kt là đúng (true) thì write(a) còn không thì bỏ qua
- break: cái này mình ít sử dụng nhưng đại khái là nó hoạt động khi được đặt trong thân các vòng lặp for, while, repeat. Khi gặp lệnh break; thì máy sẽ thoát khỏi chu trình của vòng lặp, nếu có nhiều vòng lặp lồng nhau sẽ thoát vòng lặp trong nhất chứa lệnh break.
- exit: cái này nếu đặt trong chương trình con (ctc) thì sẽ thoát ctc còn đặt trong chương trình chính sẽ kết thúc luôn.
- close: khi bạn làm với tệp như trên kia, bạn đã mở tệp với lệnh assign() thì phải đóng tệp đó lại với lệnh close
 

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
Boolean là kiểu dữ liệu có miền giá trị là true hoặc for, mình sd để KT xem nó có phải số NT không
Fi,fo chẳng qua là cái tên mình đặt cho tệp inp và out thôi, mình thấy bài bạn có sd input và output nên mình nghĩ bn học rồi chứ
break là lệnh thoát khỏi vòng lặp ngay lập tức thôi, có cũng đc mà không thì cũng không sai đâu
Close là lệnh đóng tệp sau khi làm xong
Exid thì mình chưa gặp

Mấy cái này trừ cái file text thì năm lớp 7 mình cũng học rồi, đều là kiến thức pascal bt thôi đó bn
Nếu như này mà bn ko hiểu thì nói với mình, mình làm cách ko có boolean hay break cho bn
Theo mình đang học thì lớp 8 mới học Pascal còn lớp 7 học Excel.
Cảm ơn nha.
Gặp BOOLean suốt mà không biết là gì.
À bạn ơi đề bài là đếm.
 
Last edited:
  • Like
Reactions: Deathheart

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Theo mình đang học thì lớp 8 mới học Pascal còn lớp 7 học Excel.
Cảm ơn nha.
Gặp BOOLean suốt mà không biết là gì.
À bạn ơi đề bài là đếm.
Bạn sửa lại khúc cuối thay cho câu lệnh:
Mã:
If KT=true then write(fo,i,' ');
thành lệnh:
Mã:
If KT=true then dem:=dem+1;
là được, sau vòng lặp thì write(fo,dem); nữa
p/s:Chương trình lớp 7 thì học exel là đúng rồi bn, ý mình là thi HSG tin á
 
Last edited by a moderator:
  • Like
Reactions: 02-07-2019.

02-07-2019.

Học sinh tiến bộ
HV CLB Lịch sử
Thành viên
4 Tháng năm 2018
1,485
1,656
236
Vĩnh Phúc
Trung học cơ sở Lập Thạch
Bạn sửa lại khúc cuối thay cho câu lệnh:
Mã:
If KT=true then write(fo,i,' ');
thành lệnh:
Mã:
If KT=true then dem:=dem+1;
là được, sau vòng lặp thì write(fo,dem); nữa
p/s:Chương trình lớp 7 thì học exel là đúng rồi bn, ý mình là thi HSG tin á
var i,n,dem:integer;
kt:boolean;
fi,fo:text;
Begin
Assign(fi,'dsnt.inp');reset(fi);
Assign(fo,'dsnt.out');rewrite(fo);
Read(n);
For i:=2 to n do
Begin
kt:=true;
dem:=2;
For dem:=2 to i-1 do
If i mod dem =0 then
Begin
kt:=false;
Break;
End;
If kt:=true then dem:=dem+1; hay là then inc(dem,1);
End;
Close(fi);
Close(fo);
Write(dem);
End.



Bạn bổ sung nhé!
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
var i,n,dem:integer;
kt:boolean;
fi,fo:text;
Begin
Assign(fi,'dsnt.inp');reset(fi);
Assign(fo,'dsnt.out');rewrite(fo);
Read(n);
For i:=2 to n do
Begin
kt:=true;
dem:=2;
For dem:=2 to i-1 do
If i mod dem =0 then
Begin
kt:=false;
Break;
End;
If kt:=true then dem:=dem+1; hay là then inc(dem,1);
End;
Close(fi);
Close(fo);
Write(dem);
End.



Bạn bổ sung nhé!
Mã:
var i,n,dem:integer;
      kt:boolean;
      fi,fo:text;
Begin
       Assign(fi,'dsnt.inp');reset(fi);
       Assign(fo,'dsnt.out');rewrite(fo);
       Read(fi,n);
       For i:=2 to n do
              Begin
                      kt:=true;
                      dem:=2;
                      For dem:=2 to i-1 do
                      If i mod dem =0 then
                       Begin
                              kt:=false;
                              Break;
                        End;
                       If Kt=true then dem:=dem+1;                                       
                   End;
                 Write(fo,dem);Close(fi);Close(fo);
End.
 
Last edited:
Top Bottom