View Single Post
Old 14-04-2008, 22:25   #11
LamHoa
Búa Đá
 
LamHoa's Avatar
 
Tham gia: Jan 2008
Bài: 54
VZD: 1.126
Cảm ơn: 6
Đ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)