Да се напише програма, която изчислява и извежда на екрана стойността на дадена позиция в триъгълника на Паскал по въведени от потребителя ред и позиция в него. Да се провери дали входните данни са валидни преди да се продължи с изчисляването на позицията.
Всяко число от вътрешността на триъгълника е сума от двете числа, непосредствено разположени над него.
Бонусче: Да се състави двумерен масив с всички стойности на триъгълника до въведения ред (включително) и да се изведе на екрана.
Не се притеснявайте да използвате функции :)



#include <iostream> using namespace std; int stoinost(int red, int poziciq) { if(poziciq==1) return 1; else if(poziciq==red) return 1; else return stoinost(red-1, poziciq-1) + stoinost(red-1, poziciq); } int main() { int red, poziciq; cout<<"Wuwedete red i poziciq po nego: "; cin>>red>>poziciq; if(red<poziciq) { cout<<"Newaliden whod. Poziciqta trqbwa da e rawna ili po-malka ot reda."; return 0; } cout<<"Stoinostta na red "<<red<<" i poziciq " <<poziciq<<" e "<<stoinost(red, poziciq)<<endl; return 0; }Решение използващо рекурсия. Фактически това решение е споменато в условието: „Всяко число от вътрешността на триъгълника е сума от двете числа, непосредствено разположени над него.“ или изразено математически с формула
C(n, k) = C(n-1, k-1) + C(n-1, k)
с начални стойности
C(n, 0) = 1 за всички цели числа n по-големи или равни на 0
C(0, k) = 0 за всички цели числа k по-големи от 0
т.е. комбинация на k от n елемента.
Възможно е да се реши и с цикъл for използвайки нерекурсивна формула.
Ха, супер решение, и колко просто! Рекурсивните често са такива попадения. Интересна задача, стига човек да може да отдели времето да помисли по нея. Като гледам обаче задачата не получи вниманието, което заслужаваше – може би заради изпитите по английски или заради това, че условието беше малко по-сложно (въпреки страхотната анимация, която си добавил :-). Нищо, другия път…