diff options
added sem 7
3 files changed, 111 insertions, 1 deletions
| -rw-r--r-- | README.md | 3 | ||||
| -rw-r--r-- | Sem. 7/BullsAndColls.cpp | 100 | ||||
| -rw-r--r-- | Sem. 7/README.md | 9 |
@@ -6,4 +6,5 @@ - **Тема 3 (23.10.2020 и 28.10.2020) :** Жизнен цикъл на променливите. Оператори за цикъл(while, for). Оператор break. Задачи. - **Тема 4 (04.11.2020) :** Бройни системи. Побитови операции. - **Тема 5 (13.11.2020) :** Задачи за цикли и побитови операции. - - **Тема 6 (17.11.2020) :** Функции.
\ No newline at end of file + - **Тема 6 (17.11.2020) :** Функции. + - **Тема 6 (10.11.2020) :** Масиви.
\ No newline at end of file diff --git a/Sem. 7/BullsAndColls.cpp b/Sem. 7/BullsAndColls.cpp new file mode 100644 index 0000000..5b5a54e --- /dev/null +++ b/Sem. 7/BullsAndColls.cpp @@ -0,0 +1,100 @@ +#include <iostream> +#include <stdlib.h> +using namespace std; + + +//Èãðàòà áèêîâå è êðàâè. +// Êîìï. ãåíåðèðà ñëó÷àéíî ÷èñëî âè èíòåðâàëà [1000...9999]. +// Íèå òðÿáâà äà ãî ïîçíàåì. + + +// 4278 - 1 áèê, 1 êðàâà (áèê - ÷èñëî è ïîçèöèÿòà), (êðàâà - ÷èñëîòî , íî è ïîçèöèÿòà) +// Ïîçíàâàì ÷èñëîòî, êîãàòî èìàì 4 áèêà + +bool hasDuplicateDigits(int n) ///1343 +{ + const int DIGITCOUNT = 10; + bool found[DIGITCOUNT]; + for (int i = 0; i < DIGITCOUNT; i++) + found[i] = false; + while (n != 0) + { + int lastDigit = n % 10; + if (found[lastDigit] == true) + return true; + else + found[lastDigit] = true; + n /= 10; + } + return false; +} + +void convertNumberToArr(int n, int arr[]) +{ + + for (int i = 3; i >= 0; i--) + { + arr[i] = n % 10; + n /= 10; + } + +} +int countBulls(int myNumber[], int compNumber[]) +{ + int bullsCount = 0; + for (int i = 0; i <= 3; i++) + { + if (myNumber[i] == compNumber[i]) + bullsCount++; + } + return bullsCount; +} +int countCows(int myNumber[], int compNumber[]) +{ + int cowsCount = 0; + + for (int i = 0; i <= 3; i++) + { + int myDigit = myNumber[i]; + for (int j = 0; j <= 3; j++) + { + if (j == i) // çà äà íå áðîèì áèêîâåòå + continue; + if (myDigit == compNumber[j]) + cowsCount++; + } + } + return cowsCount; +} +int main() +{ + int numberToGuess; + do + { + numberToGuess = 1000 + rand() % 9000; // [1000..9999] + } + while (hasDuplicateDigits(numberToGuess)); + + cout << "Computer has picked a number! Try to guess it!" <<endl; + int numberToGuessArr[4]; + + convertNumberToArr(numberToGuess, numberToGuessArr); + + int bullsCount = 0, cowsCount = 0; + do + { + int myNumber; + cin >> myNumber; + int myNumberArr[4]; + convertNumberToArr(myNumber, myNumberArr); + + bullsCount = countBulls(myNumberArr, numberToGuessArr); + cowsCount = countCows(myNumberArr, numberToGuessArr); + + cout << "Bulls: " << bullsCount << " Cows:" << cowsCount << endl; + + + } while (bullsCount != 4); + + cout << "Success!" << endl; +}
\ No newline at end of file diff --git a/Sem. 7/README.md b/Sem. 7/README.md new file mode 100644 index 0000000..2c6303a --- /dev/null +++ b/Sem. 7/README.md @@ -0,0 +1,9 @@ +### Код от семинарите по "Увод в програмирането" - спец. Компютърни науки, група 7 - зимен семестър 2020/2021 + + + - **Тема 1 (09.10.2020) :** Променливи. Типове променливи. Оператори. Преобразуване между типове. + - **Тема 2 (16.10.2020) :** Приоритет на операторите. Асоциативност. Условни провеки (if, switch) + - **Тема 3 (23.10.2020 и 28.10.2020) :** Жизнен цикъл на променливите. Оператори за цикъл(while, for). Оператор break. Задачи. + - **Тема 4 (04.11.2020) :** Бройни системи. Побитови операции. + - **Тема 5 (13.11.2020) :** Задачи за цикли и побитови операции. + - **Тема 6 (17.11.2020) :** Функции.
\ No newline at end of file |
