Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit0076280df2a871b240ecd2737547bdf2b4a5e2fa (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2021-11-02 17:56:41 +0200
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2021-11-02 17:56:41 +0200
Files04cddcbedec62246aecd67870289dd379d2844fd
uni-projects-0076280df2a871b240ecd2737547bdf2b4a5e2fa.tar
uni-projects-0076280df2a871b240ecd2737547bdf2b4a5e2fa.tar.gz
uni-projects-0076280df2a871b240ecd2737547bdf2b4a5e2fa.zip
Parent598977516a6be6657161d2231cb55ce92021af8f (diff)
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.cpp189
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();
+}