#include <iostream>
#include <string>
#include <fstream>
using namespace std;
// Структура
struct NOTE {
string fam; // фамилия
string im; // имя
string tel; // телефон
int dr[3]; // день, месяц, год
};
int main() {
const int N = 8;
NOTE zapis[N];
int mode;
cout << "Выберите режим:\n";
cout << "1 - ввод с клавиатуры\n";
cout << "2 - чтение из файла (data.txt)\n";
cout << "Ваш выбор: ";
cin >> mode;
if (mode == 1) {
// Ручной ввод
for (int i = 0; i < N; i++) {
cout << "\nЗапись " << i + 1 << ":\n";
cout << "Фамилия: ";
cin >> zapis[i].fam;
cout << "Имя: ";
cin >> zapis[i].im;
cout << "Телефон: ";
cin >> zapis[i].tel;
cout << "День рождения (день месяц год): ";
cin >> zapis[i].dr[0] >> zapis[i].dr[1] >> zapis[i].dr[2];
}
}
else if (mode == 2) {
// Чтение из файла
ifstream file("data.txt");
if (!file) {
cout << "Ошибка: файл data.txt не найден!\n";
return 1;
}
for (int i = 0; i < N; i++) {
file >> zapis[i].fam >> zapis[i].im >> zapis[i].tel
>> zapis[i].dr[0] >> zapis[i].dr[1] >> zapis[i].dr[2];
}
file.close();
cout << "Данные успешно загружены из файла\n";
}
else {
cout << "Неверный выбор\n";
return 1;
}
// Сортировка по дате рождения
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - i - 1; j++) {
if (zapis[j].dr[2] > zapis[j+1].dr[2]) {
swap(zapis[j], zapis[j+1]);
}
else if (zapis[j].dr[2] == zapis[j+1].dr[2] &&
zapis[j].dr[1] > zapis[j+1].dr[1]) {
swap(zapis[j], zapis[j+1]);
}
else if (zapis[j].dr[2] == zapis[j+1].dr[2] &&
zapis[j].dr[1] == zapis[j+1].dr[1] &&
zapis[j].dr[0] > zapis[j+1].dr[0]) {
swap(zapis[j], zapis[j+1]);
}
}
}
// ВЫВОД ВСЕХ ЗАПИСЕЙ (отсортированных по дате)
cout << "\n========================================\n";
cout << "ВСЕ ЗАПИСИ (упорядочены по дате рождения):\n";
cout << "========================================\n";
for (int i = 0; i < N; i++) {
cout << i + 1 << ". " << zapis[i].fam << " " << zapis[i].im
<< ", тел: " << zapis[i].tel
<< ", дата рождения: " << zapis[i].dr[0] << "."
<< zapis[i].dr[1] << "." << zapis[i].dr[2] << endl;
}
cout << "========================================\n";
// Поиск по телефону
string poisk;
cout << "\nВведите номер телефона для поиска: ";
cin >> poisk;
int found = -1;
for (int i = 0; i < N; i++) {
if (zapis[i].tel == poisk) {
found = i;
break;
}
}
if (found != -1) {
cout << "\nНайден: " << zapis[found].fam << " " << zapis[found].im
<< ", тел: " << zapis[found].tel
<< ", дата: " << zapis[found].dr[0] << "." << zapis[found].dr[1]
<< "." << zapis[found].dr[2] << endl;
} else {
cout << "\nЧеловек с номером " << poisk << " не найден\n";
}
return 0;
}