== NULL)
{
MessageBox (L "Помилка відкриття файлу Зміни. Зміни не були збережені.", L "Помилка!", MB_OK | MB_ICONERROR);
CDialog :: OnCancel ();
}
rts_char rc;
rts rt;
while (feof (g)! = fread (& rc, sizeof (rc), 1, g))
{
rt.arTime = rc.arTime;
rt.lvTime = rc.lvTime;
rt.rNum = rc.rNum;
rt.station = rc.station;
r.push_back (rt);
}
fclose (g);
shift_char sch;
shift sf;
while (feof (h)! = fread (& sch, sizeof (sch), 1, h))
{
sf.begs = sch.begs;
sf.driver = sch.driver;
sf.ends = sch.ends;
sf.kond = sch.kond;
sf.rNum = sch.rNum;
sh.push_back (sf);
}
fclose (h);
synch (vec, r, sh) ;//Синхронізація даних із запитами адміністратора
fopen_s (& f, "Запроси.bin", "wb");
fopen_s (& g, "Маршрути.bin", "wb");
fopen_s (& h, "Смени.bin", "wb");
if (f == NULL | | g == NULL | | h == NULL)
{
MessageBox (L "Помилка відкриття файлу! змін не збережено!", L "Помилка!", MB_OK | MB_ICONERROR);
CDialog :: OnCancel ();
}
for (int i = 0; i
{
lst_char ch = converting (vec [i]);
fwrite (& ch, sizeof (lst_char), 1, f);
}
for (int i = 0; i
{
rts_char ch = converting (r [i]);
fwrite (& ch, sizeof (ch), 1, g);
}
for (int i = 0; i
{
shift_char ch = converting (sh [i]);
fwrite (& ch, sizeof (ch), 1, h);
}
fclose (f);
fclose (g);
fclose (h);
CDialog :: OnCancel ();
}
Функція синхронізації з даними запитів
void synch (vector & vec, vector & vec1, vector & vec2)
{
quickSort (vec, 0, vec.size () -1);
vector :: iterator it1;
for (int i = 0; i
{
if (! binary_search (vec, vec1 [i]. rNum, 0, vec.size () -1))
{
it1 = vec1.begin () + i;
vec1.erase (it1);
i -;
}
}
vector :: iterator it2;
for (int i = 0; i
{
if (! binary_search (vec, vec2 [i]. rNum, 0, vec.size () -1))
{
it2 = vec2.begin () + i;
vec2.erase (it2);
i -;
}
}
}
Функція двійкового пошуку у векторі
bool binary_search (vector & vec, int rn, int beg, int end)
{
if (vec [beg]. routeNum == rn | | vec [end]. routeNum == rn)
return true;
int n = end - beg;
if (n == 1)
return false;
int mid = beg + (n/2);