Go Back   VN-Zoom forum > Chia sẻ kiến thức > Lập trình > Pascal | C/C++

 


Server Counter Strike 1.6 miễn phí cho thành viên VZ

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 12-04-2008, 06:48   #1
Búa Đá
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 67
VZD: 1.012
Điểm: 2/2 bài viết
Wink Pascal Help me..Thanks all (^"^)

mình tìm các số hoàn hảo từ 1..1000
mình làm như sau :
program soHoanHao;
uses crt;
const n=1000;
var i,s : integer;
begin
s:=0;
for i:=1 to n-1 do
begin
s:=s+i;
if s = n then writeln(s)
else write(''); >> viết thế này để hko in ra màn hình dài dòng
end;
readln;
end;

em viết thế này sao mà nó chả in ra màn hình cái chi cả giúp em

có nên ghi bài làm ở đây hay UP lên host if Up lên host then trình bày rõ ràng hơn nhiều
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2008, 09:04   #2
Rìu Sắt Đôi
 
thienthan's Avatar
 
Tham gia: Nov 2007
Bài: 274
VZD: 3.875
Điểm: 70/58 bài viết
Send a message via Yahoo to thienthan
Default

Nhìn lại đi n là hằng số bằng 1000 thì nó đâu phải là số hoàn hảo mà chẳng không hiện gì.
Cho nhập số n đi chứ.
program soHoanHao;
uses crt;
const n=1000;
var i,s,k : integer;
begin
s:=0;
for k:=1 to 1000 begin
for i:=1 to n-1 do
begin
s:=s+i;
if s = k then writeln(s)
end;
end;
readln;
end;
thienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2008, 11:17   #3
Rìu Sắt
 
vietanh279's Avatar
 
Tham gia: Jan 2008
Bài: 177
VZD: 2.911
Điểm: 76/26 bài viết
Default

program soHoanHao;
uses crt;
const n=1000;
var i,s,k : integer;
begin
s:=0;
for k:=1 to 1000 begin
for i:=1 to n-1 do
begin
s:=s+i;
if s = k then writeln(s);
if s > k then break; {bạn nên cho cái break vào, chương trình sẽ chạy nhanh hơn với N rất lớn, 1000000 chẳng hạn}
end;
end;
readln;
end;
__________________
Let's press and all best things will come to you


Life ===>> Football.
Football ===>> MANCHESTER UNITED

http://manutd.com.vn/
vietanh279 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2008, 12:07   #4
Búa Đá
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 67
VZD: 1.012
Điểm: 2/2 bài viết
Default

Trích:
thienthan View Post
Nhìn lại đi n là hằng số bằng 1000 thì nó đâu phải là số hoàn hảo mà chẳng không hiện gì.
Cho nhập số n đi chứ.
program soHoanHao;
uses crt;
const n=1000;
var i,s,k : integer;
begin
s:=0;
for k:=1 to 1000 begin
for i:=1 to n-1 do
begin
s:=s+i;
if s = k then writeln(s)
end;
end;
readln;
end;
nếu mình gán cho n:=1000 rồi cho chạy 1-- n nó cũng hko thấy ji...không cần khi báo hằng
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2008, 02:31   #5
Gà Con
 
blue_fox_90's Avatar
 
Tham gia: Jan 2008
Bài: 4
VZD: 410
Điểm: 7/1 bài viết
Default

* Bạn làm sai mất rồi !

* Trước tiên, mình xin nhắc lại định nghĩa số hoàn hảo: là số có tổng các ước (ngoại trừ chính nó) bằng số đó.
Vd: Số 6 có 3 ước số (trừ chính số 6) là 1, 2, 3 và 1+ 2 + 3= 6
Vậy số 6 là số hoàn hảo.

* Muốn kiểm tra 1 số có phải là số hoàn hảo hay không bạn phải cộng tất cả các ước số của nó lại. Chuơng trình của bạn có thể viêt lại như sau:

Program So_hoan_hao;
Uses Crt;
Const n= 1000; { Kiểm tra số n có phải lá Số hoàn hảo hay không ? }

Var s, i: LongInt;

BEGIN
s:= 1;
For i:= 2 To n- 1 Do
If n mod i= 0 Then
s:= s+ i;
If n= s Then WriteLn('.............')
Else WriteLn('.............');
END.
blue_fox_90 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2008, 10:23   #6
Búa Đá
 
LamHoa's Avatar
 
Tham gia: Jan 2008
Bài: 52
VZD: 658
Điểm: 5/5 bài viết
Default

Tìm các số hoàn hảo từ 1 đến 1000 chứ ko phải là kiểm tra số n=1000 có hoàn hảo hay ko. Vậy phải cho k chạy từ 1 đến 1000 rồi kiểm tra số k đó có hoàn hảo hay ko.

For k:=2 to 1000 do
begin
s:=0; {phải gán s=0 chỗ này vì sau mỗi lần thử giá trị cho k, giá trị của s đã thay đổi}
For i:=1 to k-1 do
If k mod i = 0 then s:=s+i;
If s=k then writeln(s);
end;
LamHoa vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-04-2008, 11:25   #7
Rìu Sắt
 
vietanh279's Avatar
 
Tham gia: Jan 2008
Bài: 177
VZD: 2.911
Điểm: 76/26 bài viết
Default

Chương trình chuẩn như sau:
Code:
program Tim_so_hoan_hao;
uses Crt;
const
    max = 1000;
var
    N, i, sum, mark : integer;

BEGIN
    clrscr;
    writeln('Cac so hoan hao <1000 la : ');
    for N:=1 to max do
        begin
            sum := 0;
            mark := 0;
            for i:=(N div 2) downto 1 do
                begin
                    if (N mod i = 0) then sum := sum + i;
                    if sum>=N then
                        begin 
                              mark := i;
                              break;
                        end;
                end;
            if mark=1 then writeln(N);
        end;
    readln;
END.
__________________
Let's press and all best things will come to you


Life ===>> Football.
Football ===>> MANCHESTER UNITED

http://manutd.com.vn/

thay đổi nội dung bởi: vietanh279, 13-04-2008 lúc 11:31.
vietanh279 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-04-2008, 15:34   #8
Búa Đá
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 67
VZD: 1.012
Điểm: 2/2 bài viết
Default

đây là bài của em nó chỉ hiện ra màn hình màu đen thôi
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-04-2008, 20:30   #9
Búa Gỗ Đôi
 
giangmeo's Avatar
 
Tham gia: Mar 2008
Bài: 44
VZD: 578
Điểm: 0/0 bài viết
Default

bay gio gia su du lie cho len toi bien extended thi sao
cach nay khong on
giangmeo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-04-2008, 20:32   #10
Búa Gỗ Đôi
 
giangmeo's Avatar
 
Tham gia: Mar 2008
Bài: 44
VZD: 578
Điểm: 0/0 bài viết
Default

bai nay dung qui hoach dong tot nhat
giangmeo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-04-2008, 22:25   #11
Búa Đá
 
LamHoa's Avatar
 
Tham gia: Jan 2008
Bài: 52
VZD: 658
Điểm: 5/5 bài viết
Default

Trích:
so_0_lanh_lung View Post
đây là bài của em nó chỉ hiện ra màn hình màu đen thôi
Bài làm của em sai 3 chỗ.
Thứ nhất là em chưa gán giá trị cho n, nghĩa là n đang bằng 0, vậy thì vòng For của em ko dùng được.
Thứ hai là khi cho biến i chạy, sau mỗi lần như thế giá trị của tổng s ko còn là 0 nữa, vòng chạy sau sẽ cộng tiếp các ước số vào tổng s trước đó dẫn đến giá trị s em tính được là sai,em phải cho s:=0 vào trong vòng For.
Thứ ba,em phải cho i chạy hết đến n-1 để tìm tất cả các ước số cộng lại thành tổng s cuối cùng, chứ ko phải cộng cho đến khi nào s=n thì thôi, như thế là cộng thiếu ước số của n.
Chị sửa lại như thế này em thử xem sao:

Code:
Program sohoanhao;
uses crt;
Var i,n,s,dem:integer;
begin
    writeln('Cac so hoan hao tu 1 den 1000 la: ');
    for n:=2 to 1000 do {kiểm tra lần lượt các số từ 2 đến 1000, nếu em muốn tìm các số hoàn hảo trong khoảng khác thì chỉ cần thay ở đây}
    begin
        s:=0;
        For i:=1 to n-1 do
            If (n mod i) = 0 then s:=s+i;
        If s=n then 
            begin 
               writeln(s);
               dem:=dem+1;
            end; 
    end;
    If dem=0 then write('Ko co so hoan hao') 
             else write('Co tat ca ',dem,' so hoan hao tu 1 den 1000')
end.
Tuy nhiên bài làm của vietanh279 đã rất nhanh và chính xác rồi.

thay đổi nội dung bởi: LamHoa, 14-04-2008 lúc 22:29.
LamHoa vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Thành viên đã cám ơn bài viết này của LamHoa:
so_0_lanh_lung (15-04-2008)
Old 15-04-2008, 14:52   #12
Búa Đá
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 67
VZD: 1.012
Điểm: 2/2 bài viết
Default

tuyệt vời..cám ơn đã giúp em
cho em hỏi luôn làm sao mà để code vào ô vuông như anh vậy...em viết ra thì nó toàn thẳng hàng với nhau..không rõ ràng
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-04-2008, 15:34   #13
Búa Đá
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 67
VZD: 1.012
Điểm: 2/2 bài viết
Default

em chưa hiểu cái
for i:=(N div 2) downto 1 do
của anh vietanh279 vì nó là lấy phần dư mà
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-04-2008, 15:40   #14
Búa Đá
 
so_0_lanh_lung's Avatar
 
Tham gia: Mar 2008
Đến từ: Huế
Bài: 67
VZD: 1.012
Điểm: 2/2 bài viết
Default

anh LamHoa và anh Vietanh ơi có thể cho em mail được không.. em xin để mong được học hỏi chút ít..những bài em ko hiểu em có thể mail cho các anh không .. em cám ơn
so_0_lanh_lung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-04-2008, 09:18   #15
Búa Đá Đôi
 
that_is_lg's Avatar
 
Tham gia: Feb 2008
Bài: 99
VZD: 1.109
Điểm: 5/5 bài viết
Default

bác dung freepas đi trông cho nó đẹp
that_is_lg vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Tắt
Pingbacks are Tắt
Refbacks are Tắt


Múi giờ GMT +7. Hiện tại là 22:27.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Template-Modifications by TMS
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Từ điển được cung cấp bởi VDict.com - Hosting được tài trợ bởi Rao vặt 123