注册 登录
编程论坛 Delphi论坛

[求助]输出结果如下

罗时源 发布于 2007-11-01 20:57, 1020 次点击

A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
谢谢了

[此贴子已经被作者于2007-11-1 20:58:43编辑过]

9 回复
#2
缘吇弹2007-11-01 21:34

很不明确:
1.要求用什么方法(算法),要是没什么要求的话,你直接把字母搬进去输出不就行了?
2.在哪输出?

#3
罗时源2007-11-01 22:45
用FOR循环
比如输出 *
***
*****
*******
就这样写
procedure TForm1.Button5Click(Sender: TObject);
var
i,j: integer;
s: string;
begin
for i := 1 to 4 do
begin
for j := 1 to 4-i do
s := s + ' ';
for j := 1 to 2 * i - 1 do
s := s + '*';
s := s + chr(13);
end;
showmessage(s);
end;

end.

怎么那个循环语句
老师今天刚刚讲Delphi



#4
volte2007-11-02 09:13
其实就是循环的问题,
提供两个参数的传递
一个就是第一个要输出的字符,
另一个就是输出最大的字符所在的行数或者最大的字符
通过字符的asc码进行递增就可以了。


其实这个用c++实现起来特别的清爽,
不过你用delphi的控制台实现起来也很清爽的。
#5
sky_yang_sky2007-11-02 09:26

var
i,j,k,l: integer;
s,st: string;

begin

for i := 1 to 4 do
begin
for j := 1 to 4-i do
s := s + ' ';
for j := 1 to 2 * i - 1 do
begin
st:=chr(ord('A')+i-1);
s := s + st;
end;
s := s + chr(13);

end;
for k := 3 downto 1 do
begin
for l := 3-k downto 1 do
s:=s+'';
for j := 2*k-1 downto 1 do
begin
st:=chr(ord('D')-(4-k));
s:=s+st;
end;
s:=s+chr(13);
end;


showmessage(s);
end;

#6
罗时源2007-11-02 13:04

var
i,j,k,l: integer;
s,st: string;

begin

for i := 1 to 4 do
begin
for j := 1 to 4-i do
s := s + ' ';
for j := 1 to 2 * i - 1 do
begin
st:=chr(ord('A')+i-1);
s := s + st;
end;
s := s + chr(13);

end;
for k := 3 downto 1 do
begin
for l := 3-k downto 1 do
s:=s+'';{ 空格没打出来,看了半天才看出来 }
for j := 2*k-1 downto 1 do
begin
st:=chr(ord('D')-(4-k));
s:=s+st;
end;
s:=s+chr(13);
end;


showmessage(s);
end;

谢谢了 刚学这 你后半部分可不可以不用DOWNTO写 就用都TO怎么写 我脑筋不会把它变过来 太苯了我







#7
sky_yang_sky2007-11-02 14:01
不用downto用to 的話就和你前面差不多了,自己多嘗試一下,控制循環次數就行
s:=s+'';{ 空格没打出来,看了半天才看出来 }
這個在''中加一個空格就行了,

[此贴子已经被作者于2007-11-2 14:04:00编辑过]

#8
缘吇弹2007-11-02 15:25

我觉得还是有个downto好,不用downto恐怕要用个判断,增加程序的复杂度.
var
i,j,k,l: integer;
s,st: string;

begin

for i := 1 to 4 do
begin
for j := 1 to 4-i do
s := s + ' ';
for j := 1 to 2 * i - 1 do
begin
st:=chr(ord('A')+i-1);
s := s + st;
end;
s := s + chr(13);

end;
for i :=3 downto 1 do
begin
for j := 1 to 4-i do
s := s + ' ';
for j := 1 to 2 * i - 1 do
begin
st:=chr(ord('A')+i-1);
s := s + st;
end;
s := s + chr(13);
end;
showmessage(s);
end;

#9
罗时源2007-11-02 19:58
看懂了 thank you !!!!!!
以后还会有问题请教的
不介意吧
#10
缘吇弹2007-11-03 00:58
呵呵,请教谈不上.我菜鸟一个.
其实5楼的版主的那思路很好的.
1