- Ebook Giải thuật và lập trình Lê Minh Hoàng
- Các thuật toán sắp xếp trong Pascal

Tìm các số mà tổng bình phương bằng chính nó



Đề bài: Cho dãy a1, a2, a3....a100 là dãy số nguyên gồm 4 chữ số có nghĩa. Đưa ra màn hình tất cả các số thỏa mãn điều kiện tổng bình phương các chữ số của nó bằng chính nó.


USES crt;
VAR a:ARRAY[1..100] OF INTEGER;
    n,m,i,j,h,k,l:INTEGER;
BEGIN    
    clrscr;
    FOR i:=1 TO 100 DO
    BEGIN
        a[i]:=random(8999)+1000;
    END;  
    writeln('Cac so ma tong binh phuong cac chu so bang no la:');
    FOR i:=1 TO 100 DO
    BEGIN
        m:=a[i] MOD 10;
        n:=a[i] DIV 1000;
        h:=(a[i] DIV 100)-n*10;
        l:=((a[i] MOD 100)-m) DIV 10;
        IF (a[i]= m*m+n*n+h*h+l*l) THEN write(a[i],',');
    END;
    readln      
END.


Mai Hương Trà nói...

Bai này sao chẳng in được so nào cả vậy?
Tôi viết lại như sau, xem giúp có vấn đề gì không sao không chạy được số nào?
var ng1,ng2,dv,chuc,tram,ngan,n,i:integer;
a:array[1..100] of integer;
begin
writeln(' 100 so co 4 chu so ngau nhien la:');
for i:= 1 to 100 do
begin
a[i]:=random(8999)+1000;
write(a[i]:5); writeln;
end;
writeln('cac so co binh phuong cac chu so bang no la:');

for i:=1 to 100 do
begin
dv:=a[i] mod 10;
ng1:=a[i] div 10; {lay phan nguyen khi chia cho}
chuc:=ng1 mod 10; {lay chu so hang chuc} ;
ng2:=a[i] mod 100;
tram:=ng2 mod 10;
ngan:=a[i] div 1000; {lay chu so hang nghin}
if (a[i]=(dv*dv+chuc*chuc+tram*tram+ngan*ngan)) then
write(a[i]:5);
end;
readln
end.


08:24 Ngày 11 tháng 10 năm 2012
Nặc danh nói...

không chạy được


22:36 Ngày 17 tháng 11 năm 2012

Đăng nhận xét

Thành viên Blog

Tổng số lượt xem trang

Translate

Return to top of page Copyright © 2012 | Theme by Hack Tutors. Cung cấp bởi Blogger.
Các code pascal trong blog được sưu tầm, lựa chọn sao cho tối ưu nhất. Cảm ơn các tác giả đã viết thuật toán.