12.12. Multiple Choice ExercisesΒΆ

Select all of the true statements.

What is the correct way to declare a vector of vectors of ints called vec?

What is the value of card?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
};

card::card () {
  m_suit = 0;  m_rank = 0;
}

card::card (int s, int r) {
  m_suit = s;  m_rank = r;
}

int main() {
  card card (2, 8);
}

There is an error with the code below. Can you find it?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
  void print () const;
};

int main() {
  card card (1,3);
  print (card);
}

What is the output of the code below?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
  void print () const;
  bool is_greater (const card& c2) const;
};

int main() {
  card card1 (2,12);
  card card2 (2,2);
  cout << card1.is_greater (card2) << '\n';
}

What is the output of the code below?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
  void print () const;
  bool is_greater (const card& c2) const;
};

vector<card> build_deck();

bool equals (const card& c1, const card& c2){
  return (c1.m_rank == c2.m_rank && c1.m_suit == c2.m_suit);
}

void print_deck(const vector<card>& deck);

int find (const card& card, const vector<card>& deck);

int main() {
  vector<card> deck = build_deck();
  card card (3, 13);
  cout << find(card, deck);
}

What is true about deck?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
  void print () const;
  bool is_greater (const card& c2) const;
};

vector<card> create_deck() {
  vector<card> deck (12);
  int i = 0;
  for (int m_suit = 0; m_suit <= 3; m_suit++) {
    for (int m_rank = 1; m_rank < 4; m_rank++) {
      deck[i].m_suit = m_suit;
      deck[i].m_rank = m_rank;
      i++;
    }
  }
  return deck;
}

int main() {
  vector<card> deck = create_deck();
}

How many times does find_bisect need to call itself in order to find the King of Diamonds?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
  void print () const;
  bool is_greater (const card& c2) const;
};

vector<card> build_deck();
bool equals (const card& c1, const card& c2);
void print_deck(const vector<card>& deck);
int find (const card& card, const vector<card>& deck);
int find_bisect (const card& card, const vector<card>& deck, int low, int high);

int main() {
  vector<card> deck = build_deck();
  card card (1, 13);
  cout << find_bisect(card, deck, 0, 51);
}

We want to write the function find_all_queens, which searches through a deck and prints out the location of all 4 queens in the deck. What should go in the blanks?

struct card {
  int m_suit, m_rank;
  card ();
  card (int s, int r);
  void print () const;
  bool is_greater (const card& c2) const;
};

vector<card> build_deck();
bool equals (const card& c1, const card& c2);
void print_deck(const vector<card>& deck);

void find_all_queens (const vector<card>& deck) {
  for (size_t i = 0; i < deck.____; ++i) {
    if (deck[i].____ == 12) {
      cout << ____ << ' ';
    }
  }
}

int main() {
  vector<card> deck = build_deck();
  find_all_queens (deck);
}

What is the process of modeling a complex system with a simplified description in order to suppress unnecessary details while capturing relevant behavior?