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++ )