В основном вы должны поменять петли.Таким образом, для каждого цикла в вашем коде вы увеличиваете количество экземпляров '*', которые печатаются для каждой итерации i
.Это потому, что i
и j
начинаются с 1 и увеличиваются до тех пор, пока число итераций не станет равным rows
.
int rows = 12, i = 1, j = 1;
while (i <= rows)
{
while (j <= (rows - i +1))
{}
}
. То, что вы хотите, это начинать с 12 и уменьшать каждый раз, пока вынажмите 0. Таким образом, для начала вы можете потерять переменную rows
и установить i
и j
равными 12. Во внешнем цикле while()
вы хотите уменьшить i
и каждый раз сбрасывать j = i
внутренний цикл закрывается.Внутренний цикл должен печатать * и уменьшать j.Ниже приведены мои решения, но ответ Loc Tran работает так же хорошо.
int main(void){
int i = 12, j = 12;
while(i >=0)
{
while(j >= 0)
{
printf("*");
j--;
}
printf("\n");
i--;
j=i;
}
}
Если это для школьного задания (у меня был один очень похожий вкурс 1-го курса) Я предлагаю вам попытаться понять, почему ваш код отличается от предоставляемых решений.