Trích:
shinrel
sao ai cung dung mảng 2 chiều vậy,tốn khá nhiều bộ nhớ mà giải quyết lại chậm. theo mình chỉ sử dụng mảng 1 chiều vì ở đây đề bài chỉ yêu cầu đưa ra màn hình các số chia hết cho 5 và 3. chuong trình minh họa như sau:
Program chiahet;
const max=400;
var a:array[1..max] of integer;
dem,i:integer;
function kiemtra(x:integer):boolean;
begin
if ((x div 5)==0) or ((x div 3)==0 then
kiemtra:=true
else kiemtra:=false;
end;
procedure nhapso;
begin
i:=0;
while (i<max) do
begin
inc(i);
again:write('nhap a[',i,'}:=');
readln(a[i]);
if kiemtra(a[i])=true then continue
else goto again;
end;
end;
procedure count(x:integer);
begin
dem:=0;
if ((x div 5)==0) and ((x div 3)==0) then
begin
inc(dem);
write(a[i],' ');
end;
begin
nhapso;
for i:=1 to max do
count(a[i));
writeln('tong cac so chia het 3 va 5 la:',dem);
end.
ngoài ra nếu để chương trình chạy kô tốn bộ nhớ bạn có thể dùng bộ nhớ ảo.Trong pascal cũng có đấy.Bạn tìm đọc trog cuốn cấu trúc dữ liệu và giải thuật của LMH sẽ rõ
|
Khò khò cách này cùn quá lại sai đề bài nữa