我正在学习c ++而我正在尝试使用asteriks绘制一个iscosceles三角形。我的代码如下:
if CATEGORY_CHOICES == 1:
title = 'Jobs'
icon = 'fa fa-briefcase'
slug = 'jobs'
elif CATEGORY_CHOICES == 2:
title = 'Cities'
` icon = 'fa fa-city'
slug = 'cities'
因此上半部分出来但是如何在达到j == 10之后立即开始递减,以便我得到下半部分。请协助。
答案 0 :(得分:1)
@ space_voyager的替代方案此代码支持动态大小,因此您可以根据大小定义尽可能大的代码。
这里的算法是
在第一次迭代时,它是真的(I> 10,因此当I = 11时)大小 - I = 21-11。你得到10,因此输出将打印10次。第二次我= 12.你去的时候会得到降低的结果。
int main(){
int size = 21;
for(int i=1;i<size;i++){
if(i <=size/2)
{
for(int j=0;j<i;j++)
{
cout << "*";
}
cout << endl;
}
else if (i > size/2)
{
for(int j=size-i; j>0;j--)
{
cout << "*";
}
cout << endl;
}
}
return 0;
}
输出
* ** *** **** ***** ****** ******* ******** ********* ********** ********** ********* ******** ******* ****** ***** **** *** ** *
根据space_voyager的说法,复制粘贴代码不是最好的做法。这里有更新的代码(类似于他,我只添加了动态部分。更改大小的值,你改变了一切)
int main(){
int size = 20;
for(int i=1;i<size;i++){
int k;
if(i <=size/2)
{
k = i;
}
else if (i > size/2)
{
k = size-i;
}
for(int j=0; j<k; j++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
答案 1 :(得分:0)
以下是如何做到的:
#include <iostream>
using namespace std;
int main(){
for(int i=1;i<20;i++){
int k;
if (i<=10)
{
k = i;
}
else
{
k = 20-i;
}
for(int j=0;j<k;j++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
输出:
*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*
基本思路是将映射从三角形前半部分中的最大星号数i
(直到第10行)切换到下半部分的映射20-i
。三角形。