Форум программистов, компьютерный форум CyberForum.ru

виртуальные функции - C++

Восстановить пароль Регистрация
 
tabsiger
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 19
13.06.2013, 05:26     виртуальные функции #1
Изменить программу предыдущей лабораторной работы, функцию определяющую бьет ли первая карта вторую, определитель в базовом классе как виртуальную, переопределив в производном классе с учетом козыря.
Вот предыдущая лабораторная которая называлась "Наследование"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <stdexcept>
 
class Card {
 public:
  Card() : suit(0), rank(0) {}
  Card(int suit, int rank) : suit(suit), rank(rank) {}
  int Suit() const { return suit; }
  int Rank() const { return rank; }
  void Suit(int suit) { this->suit = suit; }
  void Rank(int rank) { this->rank = rank; }int suit;
  int rank;
 private:
  
};
 
const char *CardRankName(int rank) {
  static const char RANK_NAMES[][10] = {"2", "3", "4", "5", "6", "7",
    "8", "9", "10", "Валет", "Королева", "Король", "Туз"};
  return RANK_NAMES[rank];
}
 
const char *CardSuitName(int suit) {
  static const char SUIT_NAMES[][10] = {"Черви", "Пики", "Крести",
    "Буби"};
  return SUIT_NAMES[suit];
}
 
class Game : public Card
{
public:
Game (int suit, int rank) : Card(suit, rank), trumpSuit(0)
   {
   }
   void TrumpSuit(int suit)
   {
      trumpSuit = suit;
   }
   bool isStronger(const Game& other)
   {
      
      return (this->Suit() == other.Suit() && this->Rank() > other.Rank()) ||
         (this->Suit() == trumpSuit && other.Suit() != trumpSuit) ||
         ((this->Suit() == trumpSuit && other.Suit() == trumpSuit) &&
          this->Rank() > other.Rank());
   }
private:
   int trumpSuit;
};
int main(int, char **) {
setlocale(LC_ALL, "Russian");
 
  int trumpSuit = 0; 
 
  std::cin>>trumpSuit;
 
  Game first(3,9);
  
  first.TrumpSuit(trumpSuit);
  Game second(2, 12);
  std::cout <<"Козырь: "<< CardSuitName(trumpSuit)<<std::endl;
 std::cout << CardRankName(first.Rank()) << " " << CardSuitName(first.Suit()) << " " << 
 (first.isStronger(second) ? "Кроет" : "Не кроет") << " " 
 << CardRankName(second.Rank()) << " " << CardSuitName(second.Suit()) << std::endl;
  return 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2013, 05:26     виртуальные функции
Посмотрите здесь:

C++ виртуальные функции
C++ Виртуальные функции
C++ виртуальные функции
C++ виртуальные и чисто виртуальные функции
C++ Виртуальные функции
Виртуальные функции C++
C++ Виртуальные функции
виртуальные функции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru