C++ проблема поиска
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
void check() {
string text;
ifstream file;
file.open("test.txt");
ofstream file(text);
}
struct
Work {
char Name_1[20];
char Name_2[20];
char Name_3[20];
struct {
int Day;
char Month[10];
int Year;
} BirthDay;
struct {
int Day;
char Month[10];
int Year;
} Job;
char Address[100];
};
int N = -1;
Work Mas[5];
void Add_Changes(int);
void View();
***> void Search(Work* arr, const size_t size, function<bool(Work)> fn) {
> for (size_t i = 0; i < size; i++) if (fn(arr[i])) return i;
> return -1; }***
void Menu();
void main()
{
clrscr();
Menu();
}
/*Функция добавления или изменения информации о рабочем. Добавлять
или изменять уже имеющуюся информацию, решаем на основании
значения параметра Condition (если Condition = -1, то пытаемся
добавить информацию о новом рабочем, иначе - изменяем имеющуюся)*/
void clrscr()
{
system("CLS");
}
void Add_Changes(int Condition)
{
int m;
bool Vrem;
Vrem = false; //Признак невозможности добавить нового рабочего
if ((N < 4) && (Condition == -1))
{
cout << " *** Создание новой записи ***" << endl;
N++;
m = N; //Индекс элемента массива для новой записи
Vrem = true;
} //Можно добавить еще рабочего
if (Condition > -1)
{
cout << " *** Изменение записи и номером " << Condition;
m = Condition;
} //Индекс элемента, содержащего изменяемую запись
if (Condition > N) cout << endl << "Нет записи с таким номером.";
if (((Vrem == true) && (Condition == -1)) ||
((Condition > -1) && (Condition <= N)))
{
cout << "Фамилия: ";
cin >> Mas[m].Name_1;
cout << "Имя: ";
cin >> Mas[m].Name_2;
cout << "Отчество: ";
cin >> Mas[m].Name_3;
cout << "\n ## Введите дату рождения:" << endl;
cout << "Число: ";
cin >> Mas[m].BirthDay.Day;
cout << "Месяц: ";
cin >> Mas[m].BirthDay.Month;
cout << "Год: ";
cin >> Mas[m].BirthDay.Year;
cout << "\n ## Введите дату приема на работу:" << endl;
cout << "Число: ";
cin >> Mas[m].Job.Day;
cout << "Месяц: ";
cin >> Mas[m].Job.Month;
144;
cout << "Год: ";
cin >> Mas[m].Job.Year;
cout << "\n ## Введите адрес места жительства:" << "\n\t";
cin >> Mas[m].Address;
}
if ((Vrem == false) && (Condition == -1))
{
cout << "\nВсе доступные записи заполнены. Добавление новой записи"
<< endl << "возможно только путем изменения уже имеющихся.";
}
cout << "\nДля продолжения нажмите любую клавишу...";
}
void View() //Вывод сведений о рабочих предприятия
{
int i;
cout << " *** Информация о работниках предприятия ***" << endl;
if (N == -1) cout << "\nНет информации ни в одной записи!";
else for (i = 0; i <= N; i++)
{
cout << i + 1 << ". " << Mas[i].Name_1 << " " << Mas[i].Name_2
<< " " << Mas[i].Name_3;
cout << "\n Дата рождения: " << Mas[i].BirthDay.Day << " "
<< Mas[i].BirthDay.Month << " " << Mas[i].BirthDay.Year;
cout << "\n Принят на работу: " << Mas[i].Job.Day << " "
<< Mas[i].Job.Month << " " << Mas[i].Job.Year;
cout << "\n ## Aдрес места жительства: " << Mas[i].Address;
cout << endl;
}
cout << "\nДля продолжения нажмите любую клавишу...";
}
void Menu()
{
char Ch;
int Number, Vrem;
Ch = 13;
while (Ch != 27)
{
cout << " [ Главное меню программы ]";
cout << "\n1. Вывод сведений о работниках предприятия.";
cout << "\n2. Добавление сведений о новом работнике.";
cout << "\n3. Изменение сведений о работнике.";
cout << "\n4. поиск по сведением о работников.";
cout << "\n5. сохранение в отдельный файл для изменения";
cout << "\n Завершение работы.";
cout << "\n\nВыберите пункт меню |-> ";
cin >> Number;
clrscr();
switch (Number) {
case 1: View(); break;
case 2: Add_Changes(-1); break;
case 3: clrscr();
cout << "Номер изменяемой записи (всего записей: " << N + 1145 << ") |-> \n";
cin >> Vrem;
Add_Changes(Vrem); break;
case 4: Ch = 27; break;
case 5:Search();
case 6: check();
default: cout << "\nНет такого пункта меню.";
cout << "\nДля продолжения нажмите любую клавишу...";
}
if (Ch != 27) Ch = getch();
}
}
В чём ошибка?