注册 登录
编程论坛 C++教室

怎样将这个图案横着排呢?求教

跳跳鱼 发布于 2012-08-21 22:47, 651 次点击
这是一个图案,要求横着排一下,可我只会竖着,谁能帮我排一下?
以下是图案
只有本站会员才能查看附件,请 登录

下面是程序代码
程序代码:
#include <iostream>
using namespace std;
int main()
{
    int i,j,m,n;

   //第一个
    for(i=1;i<=10;i++)
    {
        for(j=1;j<=i;j++)
        {
            cout<<"*";
        }
    cout<<endl;   
    }
    cout<<endl;
   
    //第二个
    for(m=1;m<=10;m++)
    {
        for(n=1;n<=(11-m);n++)

    {
        cout<<"*";
    }
    cout<<endl;
    }
    cout<<endl;

    //第三个
   
        for(m=1;m<=10;m++)
    {
        for(n=1;n<=(11-m);n++)

    {
        cout<<"*";
    }
    cout<<endl;
    }
    cout<<endl;


    //第四个
    for(i=1;i<=10;i++)
    {
        for(j=1;j<=i;j++)
        {
            cout<<"*";
        }
    cout<<endl;   
    }
    return 0;
}




   
13 回复
#2
dz7899892012-08-22 00:42
最弱智的办法  定义二维数组 一个个输出
#3
pangding2012-08-22 01:57
我也觉得弄个二维数组最方便。
#4
mfs1111162012-08-22 07:12
转换一下i和j不就成了?
新手,大家原谅些个……
#5
跳跳鱼2012-08-22 09:46
回复 3楼 pangding
我这是做的书上的习题,还没到数组那一章!虽说能用数组做出来,但我想找一个其他的方法
比如用制表符,也不知道可不可以,在每个图后输出一个'\t'
#6
dz7899892012-08-22 12:23
回复 5楼 跳跳鱼
\t代表8个字节的位置 就是4个英文字符的位置 所以你自己估摸着算呗
#7
vicious2012-08-22 12:38
我用for写的  不知道 你是不是这个意思


# include <iostream>
using namespace std;

int main(void)
{
    int hang, lie, n = 10;
    for (hang = 1; hang <= 10; hang++)
    {
        for (lie = 1; lie <= 10-hang; lie++)
        {
            cout << "  ";
        }
        for (lie = 1; lie <= hang; lie++)
        {
            cout << " *";
        }
        for (lie = 1; lie <= 3; lie++)
        {
            cout << " ";
        }
        for (lie = 1; lie <= hang; lie++)
        {
            cout << "* ";
        }
        for (lie = 1; lie <= 10-hang; lie++)
        {
            cout << "  ";
        }
        for (lie = 1; lie <= 3; lie++)
        {
            cout << " ";
        }
        for (lie = 1; lie <= hang; lie++)
        {
            cout << "* ";
        }
        for (lie = 1; lie <= 10-hang; lie++)
        {
            cout << "  ";
        }
        for (lie = 1; lie <= 3; lie++)
        {
            cout << " ";
        }
        for (lie = 1; lie <= 10-hang; lie++)
        {
            cout << "  ";
        }
        for (lie = 1; lie <= hang; lie++)
        {
            cout << "* ";
        }

        cout << endl;
    }

    return 0;

}
#8
vicious2012-08-22 13:25
回复 7楼 vicious
刚才写的有点太多了 。 下面这种比较好


# include <iostream>
using namespace std;
int main()
{
    for (int i = 1; i<=10; ++i)
    {
        for (int j = 0; j!=44; ++j)
        {
            if ((j > 10-i) && (j < 11) || (j > 11) && (j <= 11 + i)
                || (j > 22)&& (j <= 22+i) || (j > 43- i) && (j < 44))
            {
                cout << " *";
            }
            else
            {
                 cout << "  ";
            }
        
        }
        cout << endl;
    }
    return 0;
}
#9
跳跳鱼2012-08-22 22:43
回复 8楼 vicious
谢谢你这么认真的看了这个程序,但我不知道你写完后执行过这个程序没有,
按照你写的代码,图案会出现一些偏差。。。。。。
不过,你可以看一下下面这个代码,我觉得写得很好
程序代码:
#include <iostream>
using namespace std;
int main()

 {

 int row, column, space;


 for ( row = 1; row <= 10; ++row )

 {


 // part a
for ( column = 1; column <= row; ++column )
cout << '*';


 for ( space = 1; space <= 10 - row; ++space )
cout << ' ';

 cout << '\t';


 // part b
for ( column = 10; column >= row; --column )

 cout << '*';


 for ( space = 1; space < row; ++space )

 cout << ' ';


 cout << '\t';


 // part c
for ( column = 10; column >= row; --column)



 cout << '*';


 for ( space = 1; space<row; ++space )

 cout << ' ';


 cout << '\t';


 // part d
for ( column = 1; column <= row; ++column )
cout << '*';


 for ( space = 1; space <= 10 - row; ++space )
cout << ' ';

 cout << '\t';


 cout << endl;

 }

return 0;
}

下面是图片
只有本站会员才能查看附件,请 登录
#10
pangding2012-08-22 22:55
大概有思路就行了。方法会了这种题不用太过纠结。
#11
dz7899892012-08-26 00:06
回复 7楼 vicious
这种不用太纠结 编一个有用的项目很少用到的 二维数组多数是用来弄一个平面地图的
#12
徐宗保2012-08-26 09:07
咋看蛮复杂的,其实蛮简单的
#13
曰腻吗2012-08-26 12:35
A1
#14
有容就大2012-08-26 13:24
注意下 行列数值 应该没问题
1