Матч 30, Сколько дней рождений (HowManyBirthdays)

 

Имеется массив строк friends, содержащий имена и дни рождения друзей в формате “ИМЯ ДЕНЬ МЕСЯЦ”, где ИМЯ содержит имя, а ДЕНЬ и МЕСЯЦ соответственно день и месяц рождения. Строка today содержит текущую дату в формате “ДЕНЬ МЕСЯЦ”. Требуется вывести имена сегодняшних именинников в лексикографическом порядке.

 

Класс: HowManyBirthdays

Метод: vector<string> getList(vector<string> friends,

                              string today)

Ограничения: line содержит от 1 до 50 символов, каждый из которых является цифрой или пробелом, числа в строке line лежат в промежутке от 1 до 1000 включительно и не имеют ведущих нулей, line содержит как минимум одно число, 1 £ givenNumber £ 1000.

 

Вход. Массив строк friends, содержащий данные о друзьях и строка today, содержащая текущую дату.

 

Выход. Имена сегодняшних именинников в лексикографическом порядке. Если именинников сегодня нет, то следует вывести пустой массив как показано в примере.

 

Пример входа

friends

today

{"igor 13 6"}

"14 6"

{"larisa 27 3", "kira 7 4", "max 12 3", "kirill 27 3"}

"27 3"

{"sasha 12 5"}

"12 5"

 

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

{}

{"kirill", "larisa"}

{"sasha"}

 

 

РЕШЕНИЕ

обработка строк

 

Последовательно просматриваем строки с информацией о друзьях. Для каждого друга выделяем его имя и дату рождения. Если дата рождения совпадает с текущей датой, то заносим имя в массив res.

Сортируем массив имен res и возвращаем его в качестве результата.

 

 

ПРОГРАММА

 

#include <cstdio>

#include <vector>

#include <string>

#include <algorithm>

using namespace std;

 

class HowManyBirthdays

{

public:

  vector<string> getList(vector<string> friends, string today)

  {

    int i;

    vector<string> res;

    char name[50];

    string date;

    for(i = 0; i < friends.size(); i++)

    {

      sscanf(friends[i].c_str(),"%s",name);

      date = friends[i].substr(strlen(name) + 1);

      if (date == today) res.push_back((string)name);

    }

    sort(res.begin(),res.end());

    return res;

  }

};