我正在尝试从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;
}
如何获得等腰三角形的正确形式?
答案 0 :(得分:2)
星型为1
,2
,3
,...
,n
,n - 1
,n - 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()