lesson_3 #3

Open
alexander wants to merge 5 commits from lesson_3 into master
2 changed files with 38 additions and 8 deletions
Showing only changes of commit 2d9dea4a3c - Show all commits

View File

@ -1,8 +1,44 @@
#ifndef EXERCISE_4_HPP_
#define EXERCISE_4_HPP_
#include <iostream>
class Card
{
public:
enum rank {ACE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING};
Review

вообще насколько я помню если явно не прописанно значение, то гарантии нет что значения будут нужные. Если спользуются значения enum, лучше все забить. Но я бы не использовал чтобы сущности не путались. А сделать метод например

size_t rank2score(rank r) {
static std::unordered_map<rank, size_t> scores = {
{TWO, 2},
.....
};

return scores[rank];

}

вообще насколько я помню если явно не прописанно значение, то гарантии нет что значения будут нужные. Если спользуются значения enum, лучше все забить. Но я бы не использовал чтобы сущности не путались. А сделать метод например size_t rank2score(rank r) { static std::unordered_map<rank, size_t> scores = { {TWO, 2}, ..... }; return scores[rank]; }
enum suit {CLUBS, DIAMONDS, HEARTS, SPADES};
Card(rank r = ACE, suit s = SPADES, bool ifu = true): m_Rank(r), m_Suit(s), m_IsFaceUp(ifu) { }
Review

Не вижу смысл инициализации по умолчанию первых двух параметров, это не часто используемое и не основное значение

Не вижу смысл инициализации по умолчанию первых двух параметров, это не часто используемое и не основное значение
int GetValue() const;
void Flip();
// friend std::ostream& operator<<(std::ostream& s, const Card& aCard);
private:
rank m_Rank;
suit m_Suit;
bool m_IsFaceUp;
};
int Card::GetValue() const
Review

а туз может два значения иметь)

а туз может два значения иметь)
{
int value = 0;
if (m_IsFaceUp)
{
value = m_Rank;
if (value > 10)
{
value = 10;
}
}
return value;
}
void Card::Flip()
{
m_IsFaceUp = !m_IsFaceUp;
}
#endif

View File

@ -15,10 +15,9 @@ void ex_4();
int main()
{
// ex_1();
// ex_2();
ex_1();
ex_2();
ex_3();
ex_4();
return 0;
}
@ -129,8 +128,3 @@ void ex_3()
* [c >= a] 0 >= 3/9 is false
*/
}
void ex_4()
{
}