Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我使用的逻辑有什么问题?_C++_Design Patterns_Nested Loops - Fatal编程技术网

C++ 我使用的逻辑有什么问题?

C++ 我使用的逻辑有什么问题?,c++,design-patterns,nested-loops,C++,Design Patterns,Nested Loops,这是一个逻辑错误,对于我要做的代码 * ** *** ** * 这就是模式,我的代码运行的是 * ** *** ** ** ** 打印星星似乎有逻辑错误,我只是想知道我应该使用什么逻辑。 代码如下:- #include<iostream> using namespace std; int main() { /* * ** *** ** * */ int i,r

这是一个逻辑错误,对于我要做的代码

  *
 **
***
 **
  *
这就是模式,我的代码运行的是

  *
 **
***
 **
  **
   **
打印星星似乎有逻辑错误,我只是想知道我应该使用什么逻辑。 代码如下:-

#include<iostream>
using namespace std;
int main()
{

    /*

       *
      **
     ***
      **
       *

    */
    int i,rows;
    cout<<"Enter number of rows :"<<endl;
    cin>>rows;
    for(i = 1; i <= ((rows/2)+1) ; i++)
    {
        for(int j = (rows  - i); j >= 1; j--)
        {
            cout<<" ";
        }
        for(int k = 1; k <= i; k++)
        {
            cout<<"*";
        }
        cout<<endl;
    }
    for(i = ((rows/2)+1) ; i <= rows; i++)
    {
        for(int j = 1; j <= i; j++)
        {
            cout<<" ";
        }
        for(int k = (rows/2); k >= 1; k--)
        {
            cout<<"*";
        }
        cout<<endl;
    }


    return 0;
}

您可以按如下方式更改第二个循环:

for ( i = ( rows / 2 ); i >= 1; i-- ) {
    for ( int j = ( rows - i ); j >= 1; j-- ) {
        cout << " ";
    }
    for ( int k = 1; k <= i; k++ ) {
        cout << "*";
    }
    cout << endl;
}

这有效地解决了问题。所以对于4,你现在有了4/2。5等于2.5,然后转换成int等于2。有了5,你就得到了5/2。5是2.5+,5是3.0,那么int是3,你不需要在第二个for循环中初始化i。在第一个循环完成后,让我们继续下一行值


打印的*数由k循环控制。在第一行循环中,您打印出其中的一行,而在第二行循环中,您总是打印出相同的数字-行/2。您将希望打印出数量逐渐减少的行数+1-i。或者只用于int k=i;k std::cout如果用户输入n lol,代码表示为5,但我想让一个通用代码等待,循环现在对偶数不起作用,在输入4时,它运行与5相同,这将是第一个问题,因为循环的头太多了。我已经用第一个循环的正确循环头更新了答案。
for ( i = 1; i <= (int)( rows / 2. + .5 ); i++ )