2016-04-06 2 views
0

мне нужно создать Upsidedown треугольник и нормальный треугольник и он должен выглядеть следующим образом:Normal и Upsidedown треугольник звезд в C++

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

я создал что-то, но я получаю 5 новых линий и чем другого треугольника :

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





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

Вот код C++, Надежда кто-то может решить мою проблему:

int n,i,j; 

cout<<"Give the Number N of Stars "; 
cin>>n; 

for(i=1; i<=n; i++) 
{  
    for(j=1;j<=i-1;j++) 
     cout<<" "; 
    for(j=i;j<=n-i+1;j++) 
     cout<<"*"; 
    cout<<"\n"; 
} 

for(i=1;i<=n;i++) 
{  
    for(j=i;j<=n-1;j++) 
     cout<<" "; 
    for(j=1;j<=2*i-n;j++) 
     cout<<"*"; 
    cout<<"\n"; 
} 
+0

Вам нужно сделать это, используя два для петель? И, похоже, вам, возможно, потребуется научиться использовать отладчик для выполнения вашего кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. –

+0

Подберите произвольный N и пройдите через него вручную, по очереди, чтобы узнать, что вы получите, когда вы его вытащите. (Я дам вам подсказку, границы в ваших циклах не совсем то, что вы думаете.) – callyalater

ответ

0

Y наша внешняя петля делает i переходом от 1 к n (что означает n строк), но с каждой строки меньше n строк, количество звезд уменьшается на 2, а не 1. В результате этого возникают дополнительные строки. Там нет звезд в дополнительных линиях, так как в этом цикле:

for(j=i;j<=n-i+1;j++) 
    cout<<"*"; 

раза i превышает половину размера n, цикл не будет печатать любые звезды, так как начальное значение j больше, чем условие завершения для j.

+0

спасибо, что вы спасли мою жизнь :):) –

+0

не знаю, заслуживаю ли я этого, но рад помочь – Chara

Смежные вопросы