PDA

View Full Version : Mong mọi người cho ý kiến



trankientrung
07-02-2008, 14:48
Mình có 1 bài tập như thế này.
Sử dụng những vòng lặp đã học For..do,Repeat..Until,While.. do.Hãy viết chương trình xuất ra màn hình 1 hình chữ nhật có n là chiều rộng, m là chiều dài.
VD : n=5,m=10.


**********
* *
* *
* *
**********
Mình cũng đã làm và check thử bài của mình thì cũng đúng nhưng mình không biết còn bài nào hoàn chỉnh và hay hơn hay không mong các bạn có thể cho ý kiến.Bài của mình như sau:


Program bt;
Uses crt;
Var i,j,n,m :integer;
Begin
clrscr;
Write ('Nhap chieu rong:');Readln(n);
Write ('Nhap chieu dai :');Readln(m);
For i:=1 to n do
Begin
For j:=1 to m do
Begin
If (i=1) or (i=n) then
Write ('*')
Else
Begin
If (j=1) or (j=m) then
Write ('*')
Else
Write (' ');
end;
end;
writeln;
end;
Readln;
End.

m2mpro
07-02-2008, 16:05
Mình có cách này cũng được, nhưng chỉ là chế ra thôi, chứ cách bạn làm là tốt rồi.
- a[i,j] thì trong đó i là thông số dòng, j là thông số cột, vậy sao không viết ra hai hàm như: in(i,j) trong đó i đứng yên, còn j là để vòng lặp chạy.
- vậy chương trình chính chỉ cần: đặt i=1; in(i,i); in(i,i); in(i,m); in(n,i);
Trong đó
in(i,i) sẽ in dòng 1 cột 1 cho đến dòng 1 cột m;
in(i,i) sẽ in cột 1 dòng 1 cho đến cột 1 dòng n;
in(i,m) sẽ in dòng 1 cột m cho đến dòng n cột m ;
in(n,i) sẽ in dòng n cột 1 cho đến dòng n cột m;
Nói ra thì hơi khó hiểu, nhưng ý tưởng là vậy, dù sao bạn cũng đã làm đúng mà...
:D :D
PS: cách này sẽ in tốn thời gian hơn vì làm 4 vòng lặp riêng lẻ, độ phức tạp là O(m) hoặc O(n), còn làm theo bạn thì tốn thời gian là O(m x n) <- Đang học độ phức tạp của thuật toán nên vận dụng luôn :D :D

trankientrung
07-02-2008, 17:55
Vậy cám ơn bạn nhá ! Mà tiện thể cho mình hỏi, bạn hiện ở đâu vậy.

m2mpro
07-02-2008, 21:06
À, hiện ở TP.HCM, quận 12, phường Trung Mĩ Tây.
Bạn có câu hỏi gì có thể trao đổi với mình qua yahoo hoặc gmail...
yahoo: mar_heaven_mar@yahoo.com.vn
gmail: hoangminhtrung93@gmail.com
Chat cũng được, dùng nick yahoo.
- CHúc bạn học tốt.

QuyNam
19-04-2008, 20:53
program bt;
uses crt;
var i,n,m :integer;
begin
clrscr;
write ('Nhap chieu dai : ');readln(m);
writeln;
writeln;
write ('Nhap chieu rong : ');readln(n);
clrscr;
for i:=1 to m do
begin
write('*');
end;
writeln;
for i:=1 to n-2 do
begin
writeln('*','*':m-1);
end;
for i:=1 to m do write('*');
readln;
end.