Загрузка данных


#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;
}