Nedded 印花几何形状。列和行的大小由用户从控制台输入

问题描述 投票:0回答:1

我不知道如何在A中进行转变 在B中我不知道如何离开01。 你需要你的帮助。我摆脱了自己如何去做每件事。

我需要像这样在屏幕上显示数字。

       A. ****
           ****
            ****
       B. 1
          01
          101

我的程序输出这个。而这不是我需要输出的。

A. ****
   ****
   ****
B. 01
   0101
   010101
   

代码:

 std::cout << "Enter row: ";
 int row;
 std::cin >> row;

 std::cout << "Enter col: ";
 int col;
 std::cin >> col;
 if (row > 1 && col > 1)
 {
    for (int index = 0; index < row; ++index)
    {
        for (int j = 1; j < column; ++j)
        {
            std::cout << "*";
        }
        std::cout << "\n";
    }
 }
 else
    std::cout << "Sorry number must be greater than 1 \n";


 if (row > 1 && col > 1 && row == col)
 {
    for (int row = 0; row <= col; ++row)
    {
        for (int col = 0; col < row; ++col)
            std::cout << "0" << "1";
        std::cout << "\n";
    }
 }
 else
    std::cout << "Sorry number must be greater than 1  \n";
c++
1个回答
0
投票

如果我理解正确,在第一部分(

A
)你需要在每行星星之前打印空格。所以你需要添加一个循环来打印空格(在外循环内部但在内循环外部)

for (int i=0; i<index; ++i) {
  std::cout<<" ";
}

如果我理解得很好,你需要在第二次打印时交替使用 0 和 1。最简单的方法是使用模 (

%
) 运算符,因此
a % 2
将是
0
如果
a
是偶数
1
如果
a
是奇数。所以你应该写
std::cout << "0" << "1";
 而不是 
std::cout << (row + col + 1) % 2;

© www.soinside.com 2019 - 2024. All rights reserved.