2017-10-19 153 views
0

我想使用嵌套循环创建此形状。使用嵌套循环创建形状

$**** 
*$*** 
**$** 
***$* 
****$ 
与我的代码

然而,

int counter = 6; 
for (row = 0; row <= counter; row ++) 
{ 
    cout << "$"; 
    for (column = 1; column <= row ; column++) 
    { 
    cout << "*"; 
    } 
    cout << endl;  
} 

的结果是:

$* 
$** 
$*** 
$**** 
$***** 
$****** 

是如何在每个循环的每一个循环和移动位置创建$?

+0

只是检查内部和外部循环索引是否相等并打印'$'否则打印'*'。在内部循环内部做所有'cout'。对于(列= 1;列<=计数器;列++)',也使两个循环的迭代次数相同(对于(列= 1;列<=行;列++))=>。 –

+0

@Saramali,不,它不是功课。这是参考书中的一个问题。我想练习我的嵌套循环。 – engkhsky

+0

*如何在每个循环中创建$并在每个循环中移动位置?* - 编写家庭作业任务的目标是如果您有能力自己弄清楚这一点,而不是在此要求您给出答案。否则,你遇到的任何编程问题,你所需要的只是在这里询问并得到答案,而这不是你学习编写程序的方式。 – PaulMcKenzie

回答

1

您只更改打印的“*”数量。为了实现你想要的东西,你可以尝试这样的事情。

int count = 0; 
while(count < 5){ 
    for(int i = 0; i < 5; ++i){ 
     if(i == count){ 
       cout << "$"; 
     } else{ 
       cout << "*"; 
     } 
    } 
    cout << endl; 
    count++; 
} 
+1

谢谢!我没有看过你的答案,因为有人在评论中说如果使用其他答案。 – engkhsky

0

在您的代码中,嵌套的循环条件不正确,它只会根据行号打印值。但是,您每行的价值将保持不变。只有美元符号会继续移动。另外,尝试制作一个泛型函数,它将采用一个整数作为行计数的输入,这是一个非常好的方法。这里是解决方案:

void createDollarStars(int counter) 
{ 
    int row,column; 

    for (row = 0; row < counter; row ++) 
    { 
    for (column = 0; column < counter ; column++) 
    { 
     if(row == column) 
     { 
      cout<<"$"; 
     } 
     else 
     { 
      cout << "*"; 
     } 
    } 
     cout << endl;  
    } 
} 
-1

我想这是你想要

for(int i=0;i<n;i++){ 
    for(int j=0;j<n;j++){ 
     if(i==j) 
     cout<<"$"; 
     else cout<<"*"; 
    } 
    cout<<"\n"; 
} 
0

你需要打印的“$”时,内循环和外循环计数是相同的,在其他情况下打印“ *”。这个代码应该适合你

int counter = 6; 
for (row = 1; row <= counter; row ++) 
{ 
    for (column = 1; column <= counter; column++) 
    { 
     if((column == row){ 
       cout << "$"; 
     } else{ 
       cout << "*"; 
     } 
    } 
    cout << endl;  
}