Top.Mail.Ru
Ответы

Пожалуйста помогите решить задачу по программированию

Вы преподаватель и читаете лекцию в одном известном институте. Чтобы понять, кто из студентов присутствовал у вас на занятии, а кто нет, вы решили создать журнал. В журнал можно добавлять фамилии людей, но нельзя вычеркивать.

В аудиторию заходят студенты, и у каждого из них вы спрашиваете имя, после этого записываете в журнал.

Также иногда вас интересует, а не зашел ли студент с определенным именем(Например, потому что он никогда не посещает ваши занятия), и вы ищете это имя в журнале.

Наконец, бывает так, что вы хотите узнать, сколько уже людей вошло в аудиторию, и вы также определяете это по журналу.

В этой задаче вам предлагается написать структуру для этого журнала, а именно:

Напишите стуктуру NamesHolder. У неё должно быть 3 метода:

Метод AddName, принимает 1 аргумент типа std::string -- имя, которое нужно добавить в журнал. Добавляет это имя в журнал. Гарантируется, что у всех студентов разные имена.

Метод HasName, принимает 1 аргумент типа std::string. Проверяет, есть ли это имя в журнале. Возвращает bool. true - если имя в журнале есть, false - иначе

Метод Size, возвращает количество фамилий в журнале

Таким образом, общий вид вашей структуры будет таким:

struct NamesHolder {
void AddName(std::string);
bool HasName(std::string);
unsigned long long Size();
}
Можете использовать константные ссылки, так будет правильнее:


struct NamesHolder {
void AddName(const std::string&);
bool HasName(const std::string&);
unsigned long long Size();
}
Реализацию конкретных методов, а также небходимые для работы поля определите сами.

В систему отправляйте только код структуры и необходимые для работы #include

Пример проверки программы:

NamesHolder holder;
holder.AddName("Alice");
holder.AddName("Bob");
assert(holder.HasName("Mark") == false);
assert(holder.HasName("Alice") == true);
assert(holder.HasName("Bob") == true);
assert(holder.Size() == 2);

По дате
По рейтингу
Аватар пользователя
Новичок
12345678910111213
 #include <set> 
struct NamesHolder { 
    std::set<std::string> holder; 
    void AddName(const std::string& name) { 
        holder.insert(name); 
    } 
    bool HasName(const std::string& name) { 
        return holder.contains(name); 
    } 
    size_t Size() const { 
        return holder.size(); 
    } 
}; 
Аватар пользователя
Ученик

Спасибо



Видео по теме