Ai đó giải hộ em bài này của Pascal nha
Số tự nhiên n gọi là Amstrong nếu nó bằng tổng lập phương các chữ số của mình . Ví dụ: 153 = 1^3 + 5^3 + 3 ^3. Viết chương trình tìm tất cả các số Amstrong có 3 chữ số (sử dũng vòng lặp Repeat ... Until)
Bát can

anh ko nhớ rõ kiểu viết trong pascal >"< anh viết trong C rồi anh giải thích cho em hiểu nha.
void main()
{
int num, tram, chuc, donvi, count = 0;
for (num = 100; num < 1000; num++)
{
donvi = num % 10;
chuc = (num / 10) % 10;
tram = num / 100;
if (donvi * donvi * donvi + chuc * chuc * chuc + tram * tram * tram == num)
{
printf("\nSo %d thoa man", num);
count++;
}
}
printf("\nTong cong co %d so thoa man yeu cau", count);
}
từng dòng:
-
int num, tram, chuc, donvi, count = 0; <--- khai báo các biến num, tram, chuc, donvi, count có kiểu Integer. Num em có thể hiểu là number, count là biến đếm để coi có bao nhiêu số am xì trong. Tram, chuc, donvi là các biến số hàng trăm, hàng chục và hàng đơn vị.
-
for (num = 100; num < 1000; num++) <--- đây là lệnh For trong C nó tương đương với
For num := 100 to 999 do trong Pascal
-
donvi = num % 10;
-
chuc = (num / 10) % 10;
-
tram = num / 100;
+ theo ví dụ của em thì donvi = 3, chục = 5 và tram = 1. Toán tử
% tương đương với toán tử
modtrong Pascal
-
if (donvi * donvi * donvi + chuc * chuc * chuc + tram * tram * tram == num) <--- đây là theo mẫu của em đưa 1*1*1 + 5*5*5 + 3*3*3. Mã này tương đương với
If (dv*dv*dv + chuc*chuc*chuc + tram*tram*tram = Num) then .... ko bít ghi đúng cú pháp của Pascal ko nữa >"< em đang học thì tự viết dòng điều kiện If này nha

-
printf("\nSo %d thoa man", num);
-
count++;
+ Dòng
printf có nghĩa là in ra màn hình những số nào là số Amstrong trong khi vòng lặp chạy, tương đương với lệnh
writeln.
%d biểu diễn cho dạng số là decimal dc in ra. Dòng
count++ là biến đếm tăng lên 1 nếu số đó là số Amstrong, tương đương với
count = count + 1 trong Pascal
-
printf("\nTong cong co %d so thoa man yeu cau", count); <--- dòng này chắc em hiểu ^__^
.... { và } giống như begin và end ::)