Теперь треугольник должен быть равнобедренным
/* Треугольник из звездочек */ /* Теперь треугольник должен быть равнобедренным */
#include
/* nstars - сколько звездочек напечатать */ /* nspaces - сколько пробелов напечатать перед звездочками */
void drawOneLine(int nspaces, int nstars){ int i; /* номер печатаемой звездочки, счетчик */ /* он же - номер печатаемого пробела */
for(i=0; i < nspaces; i++) putchar(' '); for(i=0; i < nstars; i++) putchar('*'); putchar('\n'); }
/* n (номер строки) ...* 1 ..*** 2 .***** 3 ******* 4
Всего строк: LINES Число звездочек в n-ой строке: n*2 - 1 Число пробелов спереди (обозначены точкой): LINES - n
Все эти числа подсчитываются с картинки...
Их мы будем передавать в функцию drawOneLine в точке _вызова_, а не вычислять в самой функции. Функция для того и заведена, чтобы не вычислять ничего КОНКРЕТНОГО - все параметры ее переменные, и должны ПЕРЕДАВАТЬСЯ в нее из точки вызова.
В качестве параметра в точке вызова можно передавать не только значение переменной, но и значение выражения, то есть формулы.
*/ void main(){ /* ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ */ int LINES = 25; /* всего строк. Это описание переменной сразу с ее инициализацией */ int nline; /* номер строки */
/* ВЫПОЛНЯЕМЫЕ ОПЕРАТОРЫ (ДЕЙСТВИЯ) */ for(nline=1; nline <= LINES; nline++) drawOneLine(LINES - nline, /* число пробелов --> nspaces */ nline*2 - 1 /* число звездочек --> nstars */ ); }