diff options
Fixed filename date
1 files changed, 0 insertions, 205 deletions
| -rw-r--r-- | Year 1/Programming introduction/Practice-02.10.21.cpp | 205 |
diff --git a/Year 1/Programming introduction/Practice-02.10.21.cpp b/Year 1/Programming introduction/Practice-02.10.21.cpp deleted file mode 100644 index 1ddf6bd..0000000 --- a/Year 1/Programming introduction/Practice-02.10.21.cpp +++ /dev/null @@ -1,205 +0,0 @@ -#include <cstdlib> -#include <iostream> -#include <cmath> - -using namespace std; - -/* Exercises: - * https://github.com/triffon/ip-2021-22/blob/master/practicum/6/week4/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8%20%D1%87%D0%B5%D1%82%D0%B2%D1%8A%D1%80%D1%82%D0%B0%20%D1%81%D0%B5%D0%B4%D0%BC%D0%B8%D1%86%D0%B0.pdf - */ - -// Задача първа: -// Да се напише функция която при подадени два параметъра 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 trianglePerimeter(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 << trianglePerimeter(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) { - double a = pointDistance(x1, y1, x2, y2), b = pointDistance(x1, y1, x3, y3), c = pointDistance(x2, y2, x3, y3); - double p = (a + b + c) / 2; - return sqrt(p * (p - a) * (p - b) * (p - c)); // Heron's formula -} - -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) { - // This is some old code of mine: https://gitlab.com/Syndamia/algorithms/-/blob/master/C_C++/FindSpiralNumber.cpp - int n, v = max(abs(a), abs(b)), g = 8 * (v * (v + 1) / 2); - - if (b == v || a == v) { // Top row or right column - n = g - a + b - 6 * v; - } - else { // Left column or bottom row - n = g + a - b - 2 * v; - } - - return n; -} - -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(); -} |
