С++. Программу Створити за допомогою функцiй і використовуючи regex і string
Описати структуру з ім'ям NOTE, що містить наступні поля:
• Прізвище ім'я;
• Номер телефону;
• День народження (масив з трьох чисел).
Вивести записи які розміщені за алфавітом; Вивести на екран інформації про людей, чиї дні народження припадають на місяць, значення якого введене з клавіатури;
• Якщо такого немає, видати на дисплей відповідне повідомлення.
Answers & Comments
Ответ:
Ось програма на C++, яка відповідає на ваше завдання:
#include <iostream>
#include <string>
#include <regex>
#include <vector>
#include <algorithm>
using namespace std;
struct NOTE {
string name;
string phone;
int birthday[3];
};
// Функція, яка порівнює дві записи за алфавітом
bool compare_notes(const NOTE& note1, const NOTE& note2) {
return note1.name < note2.name;
}
// Функція, яка виводить записі, що мають день народження у заданому місяці
void print_notes_with_birthday_in_month(const vector<NOTE>& notes, int month) {
bool found = false;
for (const NOTE& note : notes) {
if (note.birthday[1] == month) {
cout << note.name << " " << note.phone << " " << note.birthday[0] << "/" << note.birthday[1] << "/" << note.birthday[2] << endl;
found = true;
}
}
if (!found) {
cout << "Немає записів з днем народження у заданому місяці." << endl;
}
}
int main() {
// Створення вектору записів
vector<NOTE> notes = {
{"Іванов Іван", "123456789", {1, 1, 2000}},
{"Петров Петро", "987654321", {2, 2, 1999}},
{"Сидорова Олена", "555555555", {3, 3, 1998}},
};
// Сортування записів за алфавітом
sort(notes.begin(), notes.end(), compare_notes);
// Виведення відсортованих записів
cout << "Записи відсортовані за алфавітом:" << endl;
for (const NOTE& note : notes) {
cout << note.name << " " << note.phone << " " << note.birthday[0] << "/" << note.birthday[1] << "/" << note.birthday[2] << endl;
}
// Введення місяця дня народження
int month;
cout << "Введіть місяць дня народження: ";
cin >> month;
// Виведення записів з днем народження у заданому місяці
print_notes_with_birthday_in_month(notes, month);
return 0;
}
У цій програмі використовуються функції compare_notes і print_notes_with_birthday_in_month. Перша функція порівнює дві записи за алфавітом і повертає true, якщо перша запис має менше ім'я, ніж друга. Друга функція виводить всі записи, які мають день народження у заданому місяці, або повідомляє, що таких записів немає. Для роботи з рядками із використанням регулярних виразів в програмі використовується бібліотека regex. Для зберігання даних про записи використовується структура NOTE, яка містить поля для прізвища та імені, номеру телефону та дати народження. Для зберігання записів у векторі використовується стандартна бібліотека vector. Крім того, в програмі використовується функція sort, яка сортує записи за алфавітом.