diff options
Added all task descriptions above their corresponding function
4 files changed, 219 insertions, 0 deletions
diff --git a/Year 1/Programming introduction/Practice-08.10.21.cpp b/Year 1/Programming introduction/Practice-08.10.21.cpp index 65df1b8..bb64a5b 100644 --- a/Year 1/Programming introduction/Practice-08.10.21.cpp +++ b/Year 1/Programming introduction/Practice-08.10.21.cpp @@ -6,12 +6,25 @@ using namespace std; * https://github.com/triffon/ip-2021-22/blob/master/practicum/6/week1/%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8%20%D0%BF%D1%8A%D1%80%D0%B2%D0%B0%20%D1%81%D0%B5%D0%B4%D0%BC%D0%B8%D1%86%D0%B0.pdf */ +// Задача 1: Да се въведе число. Да се изведе: +// - 1 ако е различно от 0 +// - 0 в противен случай !! void ex1() { int a; cin >> a; cout << (bool)a; } +// Задача 2: Да се въведе положително число а . Да се изведе: +// - лицето и обиколката на квадрат със страна а +// - дължината на окръжност с радиус а +// - лицето и обиколката на равностранен триъгълник със страна а +// Приемаме, че sqrt(3) = 1.73 +// Пример: +// a=4 +// square: p = 16 s = 16 +// circle: p = 25.12 +// triangle: p = 12 s = 6.92 void ex2() { int a; cin >> a; @@ -20,12 +33,22 @@ void ex2() { cout << "Triangle: " << 1.73 * a * a / 4 << " " << a * 3; } +// Задача 3: От потребителя се въвежда число. Да се изведе: +// - Единица, ако числото е четно. +// - Нула в противен случай. void ex3() { int a; cin >> a; cout << !(a % 2); } +// Задача 4: Да се въведат две числа - а и b +// Да се разменят стойностите им (по три начина, без да се използва функцията swap) +// Пример: +// a=2 +// b=9 +// 1: 9 2 +// 2: 9 2 void ex4() { int A, B, a, b, temp; cin >> a >> b; @@ -49,18 +72,37 @@ void ex4() { cout << a << " " << b << endl; } +// Задача 5: Да се въведе буква от английската азбука. Програмата връща: +// - Единица, ако буквата е гласна. +// - Нула в противен случай. +// Гласните букви в английската азбука са: a, i, o, u, e void ex5() { char letter; cin >> letter; cout << (letter == 'a' || letter == 'i' || letter == 'u' || letter == 'e' || letter == 'o'); // when is vowel } +// Задача 6: Огледално на дадено число наричаме това, съставено от цифрите му в +// обратен ред. Да се въведе четирицифрено число и да се изведе обратното му. +// Пример: +// a = 7121 +// mirror a: 1217 void ex6() { int a; cin >> a; cout << a % 10 << (a % 100) / 10 << (a % 1000) / 100 << (a % 10000) / 1000; // 1234 becomes 4321 } +// Задача 7: Напишете потребителски интерфейс, който изисква от потребителя да +// въведе количество от даден продукт (по ваш избор) и цената му. Нека софтуерът +// 1попита за три различни продукта. Накрая изведете сметката на потребителя: +// какъв брой от какво си е поръчал и колко ще му струва. +// Пример: +// Apples: 2 0.6 +// Oranges: 1 1.5 +// Bananas: 3 0.78 +// Your order is: apples for 1.2, oranges for 1.5 and bananas for 2.34. +// Total: 5.04. void ex7() { int currQuantity; double currPrice, aPrice, oPrice, bPrice; diff --git a/Year 1/Programming introduction/Practice-11.10.21.cpp b/Year 1/Programming introduction/Practice-11.10.21.cpp index a6bb71d..b139e52 100644 --- a/Year 1/Programming introduction/Practice-11.10.21.cpp +++ b/Year 1/Programming introduction/Practice-11.10.21.cpp @@ -6,28 +6,51 @@ using namespace std; * https://github.com/triffon/ip-2021-22/blob/master/practicum/6/week1/%D0%94%D0%BE%D0%BF%D1%8A%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D0%BD%D0%B8%20%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8.pdf */ +// Задача 0: Да се изведе на конзолата символа ’+’ без символа да се използва в +// кода на програмата. void ex0() { cout << (char)43; } +// Задача 1: Да се напише програма, която при подаване на положително число +// извежда сбора на числата от 1 до числото. +// Пример: +// Вход: 5 +// Изход: 1 + 2 + 3 + 4 + 5 = 15 void ex1() { int a; cin >> a; cout << a * (1 + a) / 2; // sum of arithmetic sequence, where a0 = 1 and d = 1 } +// Задача 2: Въвежда се число. Програмата изписва 1 ако числото се дели или на 3 +// или на 5. (но не и на двете едновременно) +// Пример: +// Вход: 15 –> Изход: 0 +// Вход: 3 –> Изход: 1 void ex2() { int a; cin >> a; cout << ((a % 3 == 0) != (a % 5 == 0)); // != is logical XOR } +// Задача 3*: Да се напише програма която при дадено число определя броя на +// числата които се делят на 3 или на 5 считано от 1 до числото включително. (като +// числото може да се дели и на двете едновременно) +// Пример: +// Вход: 15 +// Изход: 7, понеже имаме 3, 5, 6, 9, 10, 12, 15 void ex3() { int a; cin >> a; cout << a / 3 + a / 5 - (a / 5) / 3; } +// Задача 4*: Да се напише програма която при дадено число определя сумата на +// числата които се делят на 3 считано от 1 до числото. +// Пример: +// Вход: 15 +// Изход: 45, понеже имаме 3 + 6 + 9 + 12 + 15 void ex4() { int a; cin >> a; diff --git a/Year 1/Programming introduction/Practice-18.10.21.cpp b/Year 1/Programming introduction/Practice-18.10.21.cpp index 0b336b3..d279418 100644 --- a/Year 1/Programming introduction/Practice-18.10.21.cpp +++ b/Year 1/Programming introduction/Practice-18.10.21.cpp @@ -9,6 +9,13 @@ using namespace std; * https://github.com/triffon/ip-2021-22/blob/master/practicum/6/week2/%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8%20%D0%B2%D1%82%D0%BE%D1%80%D0%B0%20%D1%81%D0%B5%D0%B4%D0%BC%D0%B8%D1%86%D0%B0.pdf */ +// Задача 0 +// Дадени са n лева. Да се изведе на конзолата как може да се разпределят по +// банкноти така, че да имаме минимален брой банкноти. В условието приемаме, че +// имаме банкноти от 1 и 2 лева. +// Пример: +// Вход: 62 +// Изход: 1 * 50 + 1 * 10 + 1 * 2 void ex0() { int a; cin >> a; @@ -30,6 +37,12 @@ void ex0() { cout << a << " * 1"; } +// Задача 1 +// Да се напише програма, използваща конструкцията switch, която приема число от +// 1 до 12, и отпечатва на стандартния изход съответния месец от годината. +// Пример: +// Вход: 12 +// Изход: Декември void ex1() { int a; cin >> a; @@ -50,6 +63,12 @@ void ex1() { } } +// Задача 2 +// В по - долната таблица е представена глобата, която водачът получава, при +// превишена скорост. Да се изведе получената глоба при въведена скорост. +// | 50 | 70 | 90 | 110 | 130 | 160 | +// |----+----+----+-----+-----+-----| +// | 0 | 20 | 50 | 150 | 350 | 700 | void ex2() { int a; cin >> a; @@ -62,6 +81,8 @@ void ex2() { else cout << 0; } +// Задача 3 +// Да се въведат три числа и да се изведат на стандартния изход в нарастващ ред. void ex3() { int a, b, c; cin >> a >> b >> c; @@ -74,6 +95,11 @@ void ex3() { cout << c << " " << ((b < a) ? b : a) << " " << ((a > b) ? a : b); } +// Задача 4 +// От стандартния вход се въвеждат координатите (x1, y1), и (x2, y2), които описват +// правоъгълник в двуизмерна координатна система и координатите (x, y), които +// описват точка. Да се изведе на стандартния изход "true"ако точката е в +// правоъгълника, и "false"в противен случай. void ex4() { int x1, y1, x2, y2, x, y; cin >> x1 >> y1 >> x2 >> y2 >> x >> y; @@ -82,6 +108,17 @@ void ex4() { cout << (( ((x > x1 && x < x2) || (x > x2 && x < x1)) && ((y > y1 && y < y2) || (y > y2 && y < y1)) ) ? "true" : "false"); } +// Задача 5 +// Какво ще изведе програмата: +// #include <iostream> +// using namespace std; +// int main() { +// int c = 5; +// int d = (c += 3 ) + (c += 5); +// cout << d; +// return 0; +// } +// Защо? void ex5() { cout << "Will output 26, since = returns a reference and at the end it evaluates to c + c." << endl; @@ -90,6 +127,18 @@ void ex5() { cout << d; } +// Задача 6 +// Какво ще изведе програмата: +// #include <iostream> +// using namespace std; +// int main() { +// int c = 5; +// if (c += c -= 5) +// cout << (c *= 10); +// else +// cout << c; +// } +// Защо? void ex6() { cout << "Will output 0, = evaluates from the right to the left, so c becomes 0 and we have 0 + 0." << endl; @@ -100,6 +149,15 @@ void ex6() { cout << c; } +// Задача 7 +// Какво ще изведе програмата: +// #include <iostream> +// using namespace std; +// int main() { +// int c = 5; +// cout << ((c == 6) || (c / 0)); +// } +// Защо? void ex7() { cout << "Will output nothing, since you cannot divide by 0" << endl; @@ -107,6 +165,15 @@ void ex7() { cout << ((c == 6) || (c / 0)); } +// Задача 8 +// Какво ще изведе програмата: +// #include <iostream> +// using namespace std; +// int main() { +// int c = 5; +// cout << ((c == 6) && (c / 0)); +// } +// Защо? void ex8() { cout << "Will output 0, since comparison is lazy and when it evaluates c == 6 as false, it just returns" << endl; @@ -114,6 +181,17 @@ void ex8() { cout << ((c == 6) && (c / 0)); } +// Задача 9 +// Какво ще изведе програмата: +// #include <iostream> +// using namespace std; +// int main() { +// int c = 5; +// double e = 0; +// cout << ((c = 6) && (e = 1)); +// cout << c << " " << e; +// } +// Защо? void ex9() { cout << "Will output 16 1, because = returns a reference, which is practically a number, that is more than 0 so it evaluates as true" << endl; @@ -123,6 +201,10 @@ void ex9() { cout << c << " " << e; } +// Задача 10*: +// Да се реши квадратно уравнение, като предварително от потребителя са въведени +// a, b и с където: +// ax 2 + bx + c = 0 void ex10() { double a, b, c; cin >> a >> b >> c; diff --git a/Year 1/Programming introduction/Practice-25.10.21.cpp b/Year 1/Programming introduction/Practice-25.10.21.cpp index ab96626..973b5cc 100644 --- a/Year 1/Programming introduction/Practice-25.10.21.cpp +++ b/Year 1/Programming introduction/Practice-25.10.21.cpp @@ -6,6 +6,12 @@ using namespace std; * https://github.com/triffon/ip-2021-22/blob/master/practicum/6/week3/%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8%20%D1%82%D1%80%D0%B5%D1%82%D0%B0%20%D1%81%D0%B5%D0%B4%D0%BC%D0%B8%D1%86%D0%B0.pdf */ +// Задача 0 +// Въведете число а. Изведете цифрите му в обратен ред. +// Пример: +// Вход: 123637 +// Изход: +// 736321 void ex0() { int a; cin >> a; @@ -17,6 +23,12 @@ void ex0() { cout << endl; } +// Задача 1 +// Напишете програма, която по въведено цяло положително число N извежда дали е +// просто. +// Пример: +// Вход: 47 +// Изход: yes void ex1() { int a; cin >> a; @@ -31,6 +43,11 @@ void ex1() { cout << ((isPrime) ? "yes" : "no") << endl; } +// Задача 2 +// Да се въведен число от конзолата и да се определи броят на цифрите му. +// Пример: +// Вход: 47 +// Изход: 2 void ex2() { int a; cin >> a; @@ -43,6 +60,14 @@ void ex2() { cout << digits << endl; } +// Задача 3 +// Въведете n на брой цифри. Изведете числото, което образуват. N се въвежда от +// клавиатурата. +// Пример: +// Вход: +// 5 +// 15387 +// Изход: 15387 void ex3() { int a; cin >> a; @@ -55,6 +80,9 @@ void ex3() { cout << endl; } +// Задача 4: +// Изведете на екрана всички трицифрени числа, сумата на цифрите на които е +// двуцифрено число. void ex4() { for (int i = 100, digitSum; i < 1000; i++) { // could probably be optimized digitSum = i % 10 + (i / 10) % 10 + i / 100; @@ -63,6 +91,12 @@ void ex4() { } } +// Задача 5: +// Редицата на Fibonacci се дефинира чрез рекурентното уравнение +// F(n) = |0, ако n = 0, +// |1, ако n = 1, +// |F(n − 1) + F(n − 2), ако n ≥ 2 +// Да се напише програма, която при въведено n изписва n-тото число на фибоначи. void ex5() { int n; cin >> n; @@ -79,6 +113,21 @@ void ex5() { } } +// Задача 6 +// При въведено число n да се изведе следната форма: +// Вход: 12 +// * +// ** +// *** +// **** +// ***** +// ****** +// ******* +// ******** +// ********* +// ********** +// *********** +// ************ void ex6() { int n; cin >> n; @@ -90,6 +139,26 @@ void ex6() { } } +// Задача 7 +// При въведено число n, ако n е четно, добавяме единица към него. Искаме да +// изведем пясъчен часовник: +// 15 +// *************** +// ************* +// *********** +// ********* +// ******* +// ***** +// *** +// * +// * +// *** +// ***** +// ******* +// ********* +// *********** +// ************* +// *************** void ex7() { int n; cin >> n; @@ -107,6 +176,9 @@ void ex7() { } } +// Задача 8 +// Въвеждат се два часа във формата HH:MM (примерно 12:34). Да се отпечатат +// всички часове между по - ранния и по - късния. void ex8() { int hour1, hour2; cin >> hour1 >> hour2; |
