C++利用数组打印图形该怎么实现

如下两图,不清楚利用数组该如何作图,两张图都只会一行一行打出来,不知道该怎么利用循环去打印。

img

我自己的思路是一行一行打,在列那边用循环,但我觉得应该是行列都可以用循环,但不知道如何去使用循环。

打印菱形:

// len是指对角线长度,只能是奇数
void func(int len)
{
    // 打印第一行
    string str(len/2,' ');
    cout<<str<<"*"<<str<<endl;

    // 打印第二行到中间行
    for(int i=1;i<=len/2;++i)
    {
        string str1(len/2-i,' ');
        int nums = (len-2)-2*(len/2-i); // 减去两个*,再减去左右的空位
        string str2(nums,' ');
        cout<<str1<<"*"<<str2<<"*"<<str1<<endl;
    }

    // 打印中间行下一行到倒数第二行
    for(int i=1;i<len/2;++i)
    {
        string str1(i,' ');
        int nums = (len-2)-2*i;
        string str2(nums,' ');
        cout<<str1<<"*"<<str2<<"*"<<str1<<endl;
    }

    // 打印最后一行
    cout<<str<<"*"<<str<<endl;
}

有用请采纳哦,谢谢!