如何在C ++中打印等腰三角形

时间:2020-04-08 20:50:09

标签: c++ for-loop codeblocks

我正在尝试从C ++中的用户输入中创建一个带有'*'符号的等腰三角形。

例如,在用户输入5的情况下,我必须得到:

*
**
***
****
*****
****
***
**
*

我只得到:

*
**
***
****
*****

我的c ++代码:

void askData(int &n){
    cout<<"Enter a number: ";
    cin>>n;
}

void print(int A){
    for(int j=1;j<=A;j++)
    cout<<"*";
    cout<<endl;
}

void createIsoscTriangle(int n){

    for(int i=1;i<=n;i++){
    print(i);
}

int main()
{
    int n;
    askData(n);
    createIsoscTriangle(n);
    return 0;
}

如何获得等腰三角形的正确形式?

2 个答案:

答案 0 :(得分:2)

星型为123...nn - 1n - 2...,1.如评论中Brian所提到的。因此,每行的星数将为n - abs(n - i),其中abs是n - i的绝对值,并且对任何n都适用,而不仅仅是5

我将您的createIsoscTriangle函数修改为以下内容:

void createIsoscTriangle(int n) {

    for(int i = 1; i <= n * 2 - 1; i++)
        print(n - abs(n - i)); 
}

让我们尝试使用n = 5。它将打印您提到的数字。

*
**
***
****
*****
****
***
**
*

答案 1 :(得分:2)

您仅打印序列copy-move forgery。您还需要一个倒计时的循环。

N = 1

#Initial conditions
I0 = 0.01
S0= N - I0

#System of diff. equations
def system(x, t, beta, gamma ):
    I, S = x

    dIdt = (beta/gamma*S-1)*I*gamma
    dSdt = -(beta/gamma*S-1)*I*gamma

    return dIdt, dSdt

#Parameters initial value
beta = 0.03
gamma = 0.017

#Initial cond. vector
y0 = I0, S0

#time grid
t = np.linspace(0, 1300, 1300)

# Solution 
sol = odeint(system, y0, t, args=(beta, gamma))


################ Animations part ##################

fig, ax = plt.subplots()
plt.subplots_adjust(bottom = 0.25)

#solution curves for I and S
infected, = plt.plot(t, sol[:,0])
recovered, = plt.plot(t, sol[:,1])

axbeta = plt.axes([0.125, 0.1, 0.5, 0.05])

sliderbeta = Slider(axbeta, 'beta', 0, 1, valinit=beta)

def update_beta(val):
    beta_value = sliderbeta.val
    ??????????????????????????????????????
    fig.canvas.draw_idle()

sliderbeta.on_changed(update_beta)

plt.show()