Перейти к основному содержимому

Задачи

Шаблон

Даны три случая:

  • 1-й случай, когда даны две строки, выведите наименьшую из двух строк.
  • 2-й случай, когда даны два целых числа, выведите наименьшее из двух целых чисел.
  • 3-й случай, когда даны два символа, выведите наименьший из двух символов (в нижнем регистре).

Ваша задача - создать класс minElement, который будет включать приватную переменную y, конструктор, который будет устанавливать заданное значение в приватную переменную. И метод check(), который будет принимать один параметр, скажем x, и выводить min из x и y (приватная переменная).

Первая строка каждого ввода будет содержать:

  • одно целое число c.

Следующая строка будет содержат:

  • две строки, если c равно 1
  • два целых числа, если c равно 2
  • два char, если значение c равно 3.

Мы должны вывести наименьшее из двух заданных значений

Пример 1

Input:
1
gfg spl
Output:
gfg

Пример 2

Input:
2
5 9
Output:
5

Прототип

#include <bits/stdc++.h>
using namespace std;

template <class T>
class minElement {
// Завершите создание класса. Создайте приватную переменную, конструкторы и
// метод под названием check(), который принимает один параметр и печатает
// вывод в новой строке.
};

int main() {
int t;
cin >> t;
while (t--) {
int c;
cin >> c;
if (c == 1) {
string a, b;
cin >> a >> b;
minElement<string> obj1(a);
obj1.check(b);
} else if (c == 2) {
int a, b;
cin >> a >> b;
minElement<int> obj2(a);
obj2.check(b);
} else {
char a, b;
cin >> a >> b;
minElement<char> obj3(a);
obj3.check(b);
}
}
}

Специализация шаблонов классов

Дано описание функции main, которая считывает значения перечисления для двух разных типов в качестве входных данных, затем выводит соответствующие имена перечисления. Напишите шаблон класса, который может предоставлять имена значений перечисления для обоих типов. Если значение перечисления недопустимо, то выведите unknown.

Формат ввода

Первая строка содержит tt количество тестовых примеров.

Каждая из tt последующих строк содержит два целых числа через пробел. Первое целое число - это значение цвета cc, а второе целое число - это значение фрукта ff.

Ограничения

  • 1t1001 \le t \le 100
  • 2×109c2×109-2 \times 10^9 \le c \le 2 \times 10^9
  • 2×109f2×109-2 \times 10^9 \le f \le 2 \times 10^9

Формат вывода

Код прототипа печатает tt строк, содержащие название цвета и название фрукта, соответствующие входному индексу перечисления.

Пример ввода

2
1 0
3 3

Пример вывода

green apple
unknown unknown

Объяснение

Начиная с t=2t=2, выводятся две строки.

  1. Два входных значения индекса 1 и 0, соответствуют green в перечислении Color и apple в перечислении Fruit. Таким образом, мы выводим green apple.
  2. Два входных значения, 33 и 33, находятся за пределами диапазона наших перечислений. Таким образом, мы выводим unknown unknown.

Прототип

#include <iostream>
using namespace std;
enum class Color { red, green, orange };
enum class Fruit { apple, orange, pear };

template <typename T>
class Traits;

// Определите специализации для шаблона класса Traits здесь.

int main() {
int t = 0;
std::cin >> t;
for (int i = 0; i != t; ++i) {
int index1;
std::cin >> index1;
int index2;
std::cin >> index2;
cout << Traits<Color>::name(index1) << " ";
cout << Traits<Fruit>::name(index2) << "\n";
}
}