找出帕斯卡钻石项目中空间的数学公式

发布于 2025-01-12 07:25:13 字数 890 浏览 0 评论 0原文

伙计们,进展如何?
我编写了一个在命令行中“绘制”钻石的程序(这是我作业的一部分)。对于菱形内部的空间,我得到了一个公式“1 + 2(k-2) 或 2k -3 ,其中 k 是行号”,但我不明白这个公式是如何创建的。有人能解释一下吗?

program diamond;
var
    n, k, h, i: integer;
begin
    repeat 
        write('Enter the diamond''s height (positive odd): ');
        readln(h);
    until (h > 0) and (h mod 2 = 1);
    n := h div 2;
    for k := 1 to n + 1 do
    begin 
        for i := 1 to n + 1 - k do
            write(' ');
        write('*');            
        if k > 1 then 
        begin 
        for i := 1 to 2*k - 3 do
            write(' ');
        write('*')
        end;
        writeln
    end;
    for k := n downto 1 do 
    begin 
    for i := 1 to n + 1 - k do
        write(' ');
    write('*');
    if k > 1 then
    begin 
        for i := 1 to 2*k - 3 do
            write(' ');
        write('*')
    end;
    writeln
    end
end.

How is it going guys ?
I've written a program that "draws" diamond in the command line (it's a part of my homework). For spaces inside the diamond I was given a formula "1 + 2(k-2) or 2k -3 , where k is line number", but I don't understand how this formula was created. Could anyone explain it ?

program diamond;
var
    n, k, h, i: integer;
begin
    repeat 
        write('Enter the diamond''s height (positive odd): ');
        readln(h);
    until (h > 0) and (h mod 2 = 1);
    n := h div 2;
    for k := 1 to n + 1 do
    begin 
        for i := 1 to n + 1 - k do
            write(' ');
        write('*');            
        if k > 1 then 
        begin 
        for i := 1 to 2*k - 3 do
            write(' ');
        write('*')
        end;
        writeln
    end;
    for k := n downto 1 do 
    begin 
    for i := 1 to n + 1 - k do
        write(' ');
    write('*');
    if k > 1 then
    begin 
        for i := 1 to 2*k - 3 do
            write(' ');
        write('*')
    end;
    writeln
    end
end.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

羁拥 2025-01-19 07:25:13

我已经想通了。这是一个简单但经过修改的算术级数 An=A1-d(n-2)。通常我们会使用(n-1),但因为我们需要从每行减去2颗星(从第二行开始,因为这个公式适用于k>1),所以我们使用(n-2)

I've already figured it out. It's a simple, but modified arithmetic progression An=A1-d(n-2). Usually we would use (n-1), but because we need to substract 2 stars from each line (starting from the second one, as this formula works for k>1), we use (n-2)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文