From af6df8ee13421602442ede2cfab52dd70788b588 Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev <68247567+stoychoX@users.noreply.github.com> Date: Wed, 6 Apr 2022 16:38:07 +0300 Subject: Delete pract KN/week7/solution directory --- pract KN/week7/solution/Source.cpp | 10 --- pract KN/week7/solution/betType.h | 14 ---- pract KN/week7/solution/game.cpp | 154 ------------------------------------- pract KN/week7/solution/game.h | 25 ------ pract KN/week7/solution/player.cpp | 142 ---------------------------------- pract KN/week7/solution/player.h | 54 ------------- 6 files changed, 399 deletions(-) delete mode 100644 pract KN/week7/solution/Source.cpp delete mode 100644 pract KN/week7/solution/betType.h delete mode 100644 pract KN/week7/solution/game.cpp delete mode 100644 pract KN/week7/solution/game.h delete mode 100644 pract KN/week7/solution/player.cpp delete mode 100644 pract KN/week7/solution/player.h diff --git a/pract KN/week7/solution/Source.cpp b/pract KN/week7/solution/Source.cpp deleted file mode 100644 index d28893f..0000000 --- a/pract KN/week7/solution/Source.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include"player.h" -#include"game.h" - -int main() { - /*player p("Ivan", "1111", 19, 100); - - game g; - g.play(p);*/ -} \ No newline at end of file diff --git a/pract KN/week7/solution/betType.h b/pract KN/week7/solution/betType.h deleted file mode 100644 index e540d6d..0000000 --- a/pract KN/week7/solution/betType.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef BET_TYPE_HEADER -#define BET_TYPE_HEADER - -enum class betType { - isEven, - isNotEven, - isPrime, - isPowerOfTwo, - isBiggerThan, - isSmallerThan, - isTheSameAs -}; - -#endif // !BET_TYPE_HEADER diff --git a/pract KN/week7/solution/game.cpp b/pract KN/week7/solution/game.cpp deleted file mode 100644 index 7adc45c..0000000 --- a/pract KN/week7/solution/game.cpp +++ /dev/null @@ -1,154 +0,0 @@ -#include "game.h" -#include -#include -#include - -void game::generateNumber() { - srand(time(NULL)); - - number = rand() % 100 + 1; -} - -void game::validateBet(double& bet, double currentMoney) const { - std::cout << "How much money would you like to bet? " << std::endl - << "Your money now: " << currentMoney << std::endl; - - bool fail = false; - - do { - if (fail) - std::cout << "Invalid input" << std::endl; - - std::cin >> bet; - - fail = true; - - // Проверява дали сме въвели текстов низ вместо число - // и поправя потока. - if (!(bool)(std::cin)) { - std::cin.clear(); - std::cin.ignore(255, '\n'); - } - - } while (bet > currentMoney || bet < 0); -} - -void game::validateNumber(int& num) const { - std::cout << "Enter your number: "; - - bool fail = false; - - do { - if (fail) - std::cout << "Try again" << std::endl; - - std::cin >> num; - - if (!(bool)(std::cin)) { - std::cin.clear(); - std::cin.ignore(255, '\n'); - } - - fail = true; - - } while (num < 20 || num > 60); -} - -double game::getRate(betType currentBet) const { - double rate = 0; - int myNumber = 0; - - switch (currentBet) { - case betType::isEven: - rate = !(number % 2) ? 0.2 : -1; - break; - case betType::isNotEven: - rate = !(number % 2) ? -1 : 0.2; - break; - case betType::isPrime: - rate = isPrime(number) ? 0.5 : -1; - break; - case betType::isPowerOfTwo: - rate = isPowerOfTwo(number) ? 1 : -1; - break; - case betType::isBiggerThan: - validateNumber(myNumber); - rate = (myNumber > number) ? 0.25 : -1; - break; - case betType::isSmallerThan: - validateNumber(myNumber); - rate = (myNumber < number) ? 0.25 : -1; - break; - case betType::isTheSameAs: - validateNumber(myNumber); - rate = (myNumber == number) ? 10 : -1; - break; - } - - return rate; -} - -void game::play(player& p) { - if (p.getAge() < 18) { - std::cout << "You are too young" << std::endl; - return; - } - - char buff[20]; - std::cout << "Enter your password, " << p.getName() << ": "; - std::cin.getline(buff, 20, '\n'); - - if (!p.comparePassword(buff)) { - std::cout << "Wrong password. Goodbye."; - return; - } - - while (!p.isBroke()) { - double myBet = 0; - - betType currentBet = p.makeBet(); - - generateNumber(); - - validateBet(myBet, p.getMoney()); - - p.updateMoney(myBet, getRate(currentBet)); - - std::cout << "The number was: " << number << std::endl; - } - - std::cout << "You lost all your money!" << std::endl; -} - -// Bonus -> Newton's method for finding square root -// https://math.mit.edu/~stevenj/18.335/newton-sqrt.pdf -// Formula: a_n = 0.5 * (a_{n-1} + number / a_{n-1}) -double newtonSquareRoot(double num, int l = 100) { - double result = 1; - double temp = 1; - - for (int i = 0; i < l; i++) { - temp = 0.5 * (result + num / result); - - if (temp == result && result != 1) - return result; - - result = temp; - } - - return result; -} - -bool isPrime(int num) { - // int border = sqrt(num); is perfectly fine! - int border = newtonSquareRoot(num); - - for (int i = 2; i <= border; i++) - if (num % i == 0) - return false; - return true; -} - -bool isPowerOfTwo(int num) { - return num != 0 && ((num & (num - 1)) == 0); -} \ No newline at end of file diff --git a/pract KN/week7/solution/game.h b/pract KN/week7/solution/game.h deleted file mode 100644 index a2a4ed0..0000000 --- a/pract KN/week7/solution/game.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef GAME_HEADER -#define GAME_HEADER - -#include"player.h" - -double newtonSquareRoot(double, int); -bool isPrime(int number); -bool isPowerOfTwo(int number); - -class game { -private: - size_t number; - - void generateNumber(); - - void validateBet(double& bet, double cMoney) const; - void validateNumber(int& number) const; - - double getRate(betType currentBet) const; -public: - void play(player& p); -}; - - -#endif diff --git a/pract KN/week7/solution/player.cpp b/pract KN/week7/solution/player.cpp deleted file mode 100644 index 4d56462..0000000 --- a/pract KN/week7/solution/player.cpp +++ /dev/null @@ -1,142 +0,0 @@ -#include "player.h" -#include - -void player::free() { - delete[] name; - delete[] password; -} - -void player::copy(const player& other) { - name = copyDynamic(other.name); - password = copyDynamic(other.password); - - money = other.money; - age = other.age; -} -void player::showHelp() const { - std::cout << - "0 for even" << std::endl << - "1 for not even" << std::endl << - "2 for prime" << std::endl << - "3 for power of two" << std::endl << - "4 for is less than " << std::endl << - "5 for is bigger than" << std::endl << - "6 for is equals" << std::endl; -} - -char* player::copyDynamic(const char* arg) const { - char* toReturn = new char[strlen(arg) + 1]; - strcpy(toReturn, arg); - return toReturn; -} - -player::player(const char* name, const char* pass, int age, double money) { - this->name = copyDynamic(name); - password = copyDynamic(pass); - - setAge(age); - this->money = money; -} - -player::player(const player& other) { - copy(other); -} - -player& player::operator=(const player& other) { - if (this != &other) { - free(); - copy(other); - } - return *this; -} - -void player::setName(const char* newName) { - delete[] name; - name = copyDynamic(newName); -} - -void player::setAge(int newAge) { - if (newAge <= 0 || newAge >= 100) { - age = 0; - return; - } - age = newAge; -} - -const char* player::getName() const { - return name; -} - -void player::changePassword(const char* newPass, const char* oldPass) { - if (comparePassword(oldPass)) { - delete[] password; - password = copyDynamic(newPass); - } -} - -void player::updateMoney(double bet, double rate) { - money += bet * rate; -} - -int player::getAge() const { - return age; -} - -double player::getMoney() const { - return money; -} - -bool player::isBroke() const { - return money <= 0; -} - -bool player::comparePassword(const char* pwd) const { - return pwd != nullptr && (strcmp(password, pwd) == 0); -} - -betType player::makeBet() const { - std::cout << name << ", what is your bet? Press h for help and m to view money.\n"; - - while (true) { - std::cout << ">"; - char ch; - - std::cin >> ch; - - switch (ch) { - case 'h': - showHelp(); - break; - case 'm': - std::cout << "Money: " << money << std::endl; - break; - case '0': - return betType::isEven; - break; - case '1': - return betType::isNotEven; - break; - case '2': - return betType::isPrime; - break; - case '3': - return betType::isPowerOfTwo; - break; - case '4': - return betType::isSmallerThan; - break; - case '5': - return betType::isBiggerThan; - break; - case '6': - return betType::isTheSameAs; - break; - default: - break; - } - } -} - -player::~player() { - free(); -} diff --git a/pract KN/week7/solution/player.h b/pract KN/week7/solution/player.h deleted file mode 100644 index 134e0d6..0000000 --- a/pract KN/week7/solution/player.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef PLAYER_HEADER -#define PLAYER_HEADER -#include"betType.h" - -#pragma warning(disable : 4996) - -class player { -private: - char* name; - char* password; - int age; - double money; - - void free(); - - void copy(const player& other); - - void showHelp() const; - - char* copyDynamic(const char* arg) const; - -public: - player() : name(nullptr), password(nullptr), age(0), money(0) {} - - player(const char* name,const char* pass, int age, double money); - - player(const player& other); - - player& operator=(const player& other); - - void setName(const char* newName); - - void setAge(int newAge); - - const char* getName() const; - - void changePassword(const char* newPass, const char* oldPass); - - void updateMoney(double bet, double rate); - - int getAge() const; - - double getMoney() const; - - bool isBroke() const; - - bool comparePassword(const char* pwd) const; - - betType makeBet() const; - - ~player(); -}; - -#endif -- cgit v1.3.1-23-gd82d