lesson 5 #5

Open
alexander wants to merge 1 commits from lesson_5 into master
Owner
  1. Реализовать шаблон класса Pair1, который позволяет пользователю передавать данные одного типа парами.
    Следующий код:
int main()
{
    Pair1<int> p1(6, 9);
    cout << "Pair: " << p1.first() << ' ' << p1.second() << '\n';

    const Pair1<double> p2(3.4, 7.8);
    cout << "Pair: " << p2.first() << ' ' << p2.second() << '\n';

    return 0;
}

… должен производить результат:

Pair: 6 9
Pair: 3.4 7.8
  1. Реализовать класс Pair, который позволяет использовать разные типы данных в передаваемых парах.
    Следующий код:
int main()
{
    Pair<int, double> p1(6, 7.8);
    cout << "Pair: " << p1.first() << ' ' << p1.second() << '\n';

    const Pair<double, int> p2(3.4, 5);
    cout << "Pair: " << p2.first() << ' ' << p2.second() << '\n';

    return 0;
}

… должен производить следующий результат:

Pair: 6 7.8
Pair: 3.4 5

Подсказка: чтобы определить шаблон с использованием двух разных типов, просто разделите параметры типа шаблона запятой.

  1. Написать шаблон класса StringValuePair, в котором первое значение всегда типа string, а второе — любого типа. Этот шаблон класса должен наследовать частично специализированный класс Pair, в котором первый параметр — string, а второй — любого типа данных.
    Следующий код:
int main()
{
    StringValuePair<int> svp("Amazing", 7);
    std::cout << "Pair: " << svp.first() << ' ' << svp.second() << '\n';
    return 0;
}

… должен производить следующий результат:
Pair: Amazing 7
Подсказка: при вызове конструктора класса Pair из конструктора класса StringValuePair не забудьте указать, что параметры относятся к классу Pair.

  1. Согласно иерархии классов, которая представлена в методичке к уроку 3, от класса Hand наследует класс GenericPlayer, который обобщенно представляет игрока, ведь у нас будет два типа игроков - человек и компьютер. Создать класс GenericPlayer, в который добавить поле name - имя игрока. Также добавить 3 метода:
  • IsHitting() - чисто виртуальная функция, возвращает информацию, нужна ли игроку еще одна карта.
  • IsBoosted() - возвращает bool значение, есть ли у игрока перебор
  • Bust() - выводит на экран имя игрока и объявляет, что у него перебор.
1. Реализовать шаблон класса Pair1, который позволяет пользователю передавать данные одного типа парами. Следующий код: ```cpp int main() { Pair1<int> p1(6, 9); cout << "Pair: " << p1.first() << ' ' << p1.second() << '\n'; const Pair1<double> p2(3.4, 7.8); cout << "Pair: " << p2.first() << ' ' << p2.second() << '\n'; return 0; } ``` … должен производить результат: ``` Pair: 6 9 Pair: 3.4 7.8 ``` 2. Реализовать класс Pair, который позволяет использовать разные типы данных в передаваемых парах. Следующий код: ```cpp int main() { Pair<int, double> p1(6, 7.8); cout << "Pair: " << p1.first() << ' ' << p1.second() << '\n'; const Pair<double, int> p2(3.4, 5); cout << "Pair: " << p2.first() << ' ' << p2.second() << '\n'; return 0; } ``` … должен производить следующий результат: ``` Pair: 6 7.8 Pair: 3.4 5 ``` *Подсказка: чтобы определить шаблон с использованием двух разных типов, просто разделите параметры типа шаблона запятой.* 3. Написать шаблон класса StringValuePair, в котором первое значение всегда типа string, а второе — любого типа. Этот шаблон класса должен наследовать частично специализированный класс Pair, в котором первый параметр — string, а второй — любого типа данных. Следующий код: ```cpp int main() { StringValuePair<int> svp("Amazing", 7); std::cout << "Pair: " << svp.first() << ' ' << svp.second() << '\n'; return 0; } ``` … должен производить следующий результат: `Pair: Amazing 7` *Подсказка: при вызове конструктора класса Pair из конструктора класса StringValuePair не забудьте указать, что параметры относятся к классу Pair.* 4. Согласно иерархии классов, которая представлена в методичке к уроку 3, от класса Hand наследует класс GenericPlayer, который обобщенно представляет игрока, ведь у нас будет два типа игроков - человек и компьютер. Создать класс GenericPlayer, в который добавить поле name - имя игрока. Также добавить 3 метода: * IsHitting() - чисто виртуальная функция, возвращает информацию, нужна ли игроку еще одна карта. * IsBoosted() - возвращает bool значение, есть ли у игрока перебор * Bust() - выводит на экран имя игрока и объявляет, что у него перебор.
alexander added 1 commit 2021-07-04 01:03:27 +00:00
This pull request can be merged automatically.
You are not authorized to merge this pull request.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b lesson_5 master
git pull origin lesson_5

Step 2:

Merge the changes and update on Gitea.
git checkout master
git merge --no-ff lesson_5
git push origin master
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: alexander/geekbrains_oop_cpp#5
No description provided.