diff options
Added potentially broken exercises from today's practice
1 files changed, 189 insertions, 0 deletions
| -rw-r--r-- | Year 1/Programming introduction/Practice-02.10.21.cpp | 189 |
diff --git a/Year 1/Programming introduction/Practice-02.10.21.cpp b/Year 1/Programming introduction/Practice-02.10.21.cpp new file mode 100644 index 0000000..f000ab8 --- /dev/null +++ b/Year 1/Programming introduction/Practice-02.10.21.cpp @@ -0,0 +1,189 @@ +#include <cstdlib> +#include <iostream> +#include <cmath> + +using namespace std; + +// Задача първа: +// Да се напише функция която при подадени два параметъра m и n връща сумата на +// числата в интервала [m, n]. + +int rangeSum(int m, int n) { + if (m > n) return 0; + + int sum = m; + while(++m <= n) // can be optimized with progression sum formula + sum += m; + + return sum; +} + +void ex1() { + int m, n; + cin >> m >> n; + + cout << rangeSum(m, n) << endl; +} + +// Задача втора: +// Напишете функция която приема за аргументи х и n като n e цяло число и връща +// х на степен n. Не можем да използваме функция pow. +// Пример: +// Вход: 3 2 Изход: 9 + +int powered(int x, int n) { + int poweredNum = 1; + while(--n >= 0) + poweredNum *= x; + + return poweredNum; +} + +void ex2() { + int x, n; + cin >> x >> n; + + cout << powered(x, n) << endl; +} + +// Задача трета: +// Да се напише функция която приема число и връща абсолютната му стойност. + +int absNum(int n) { + return (n < 0) ? -n : n; +} + +void ex3() { + int n; + cin >> n; + + cout << absNum(n) << endl; +} + +// Задача четвърта: +// Напишете функция която намира разстоянието между две точки по подадени +// координати в декартова координатна система. + +double pointDistance(int x1, int y1, int x2, int y2) { + return sqrt(powered(absNum(x2 - x1), 2) + powered(absNum(y2 - y1), 2)); +} + +void ex4() { + int x1, y1, x2, y2; + cin >> x1 >> y1 >> x2 >> y2; + + cout << pointDistance(x1, y1, x2, y2) << endl; +} + +// Задача пета: +// Напишете функция която намира обиколката на триъгълник определен по +// подадени три точки + +double trianglePerimiter(int x1, int y1, int x2, int y2, int x3, int y3) { + return pointDistance(x1, y1, x2, y2) + pointDistance(x1, y1, x3, y3) + pointDistance(x2, y2, x3, y3); +} + +void ex5() { + int x1, y1, x2, y2, x3, y3; + cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; + + cout << trianglePerimiter(x1, y1, x2, y2, x3, y3) << endl; +} + +// Задача шеста: +// Напишете функция, която приема цяло число и връща факториела му. + +int fac(int n) { + if (n <= 1) return 1; // doesn't support negatives + + int factoriel = 1; + for(int i = 1; i <= n; i++) + factoriel *= i; + + return factoriel; +} + +void ex6() { + int n; + cin >> n; + + cout << fac(n) << endl; +} + +// Бонус +// Напишете функция която пресмята лицето на триъгълник определен по подадени +// три точки. + +double triangleArea(int x1, int y1, int x2, int y2, int x3, int y3) { + return pointDistance(x1, y1, x2, y2) * pointDistance(x1, y1, x3, y3) * pointDistance(x2, y2, x3, y3); +} + +void bonus() { + int x1, y1, x2, y2, x3, y3; + cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; + + cout << triangleArea(x1, y1, x2, y2, x3, y3) << endl; +} + +// Задача седма: +// Напишете функция която приема символ и определя дали е число. + +bool charIsNum(char ch) { + return ch >= '0' && ch <= '9'; +} + +void ex7() { + char s; + cin >> s; + + cout << ((charIsNum(s) ? "Is a number" : "Is NOT a number")) << endl; +} + +// Задача осма**: +// Напишете функция която приема два агрумента и връща цяло число. Числото +// трябва да е различно за всеки две различни стойности на входа. +// Тоест: +// (f(a, b) == f(c, d)) ⇐⇒ (a == c & b == d) + +int f(int a, int b) { + return fac(a) + fac(b); +} + +void ex8() { + int a, b, c, d; + cin >> a >> b >> c >> d; + + cout << f(a, b) << " " << f(c, d) << endl; +} + +// Задача девета: +// Играем играта guess the number! Правилата са следните: +// Компютърът си намисля число на случаен принцип (използваме функцията rand()) +// Потребителя въвежда число. Ако числото е правилно сме победители. В противен +// случай получаваме съобщение дали въведеното от нас число е по - голямо или по - +// малко от намисленото. Играта продължава докато не се познае числото. +// Играта да се реализира във функция play(). + +void play() { + int n = rand(); + + int input; + while(true) { + cin >> input; + + if(input == n) { + cout << "You win!" << endl; + return; + } + else + cout << ((n > input) ? "Smaller than n" : "Bigger than n") << endl; + } +} + +void ex9() { + play(); +} + +int main() { + ex9(); +} |
