Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программа_текст.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
161 Кб
Скачать
☆

Void WriteKdr(int n_kdr_t)

{ long poz; // smescheNie npi nozicioNipovaNii

poz = (long)sz_spb + (long)n_kdr_t*(long)sz_kdr + (long)sz_bur_kdr; // paschet smescheNja Nachala zanisi

if (lseek(d_fk, poz, SEEK_SET) != poz) // oshibka nozicioNipovaNja?

ErrObr(E_LSEEK_WRFREE);

if (write(d_fk, mas_free_pi, sz_free_zone) != sz_free_zone) // oshibka zanisi?

ErrObr(E_PARKDR_RW_WRFREE);

}

// zanis daNNux kaNala v fail-koniy

// n_kdr_t - Nomep tekuschego kadpa dlja zanisi daNNux

// canal - Nomep kaNala

// typ - tin napametpa

Void WriteParam(int n_kdr_t, int canal, int typ)

{ long poz; // smescheNie npi nozicioNipovaNii

poz = (long)sz_spb + (long)n_kdr_t*(long)sz_kdr + (long)sz_bur_kdr + (long)(canal*sizeof(float));

// paschet smesch.Nachala zanisi

if (lseek(d_fk, poz, SEEK_SET) != poz) // oshibka nozicioNipovaNja?

ErrObr(E_LSEEK_WRPARAM);

switch(typ)

{ case TYP_AP: if (write(d_fk, &mas_free_pi[canal], BYTE_4) != BYTE_4) // oshibka zanisi?

ErrObr(E_PARKDR_RW_WRPARAM);

break;

case TYP_RKA:

case TYP_RKD:

case TYP_RKR: if (write(d_fk, &mas_free_rk[canal], BYTE_4) != BYTE_4) // oshibka zanisi?

ErrObr(E_PARKDR_RW_WRPARAM);

break;

default : ; break;

}

}

// calc_par.cpp - paschet napametpov i obpabotka faila-konii (13.01.10)

#include <limits.h>

#include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\strctext.h" #include "c:\temp\kypc_st\func_obr.h"

#include "c:\temp\kypc_st\sst_fk.h" #include "c:\temp\kypc_st\ap_cycl.h" #include "c:\temp\kypc_st\rk_cycl.h"

#include "c:\temp\kypc_st\N_error.h"

#define NO_EXTREMUM LONG_MIN // zanpet fopmipovaNija extpemyma aNalogovogo napametpa

// obpabotka napametpov noleta

void CalculateFlight()

{ short n_kdr, count_HB; // Nomep kadpa, schetchik bapometpicheskoi vusotu

float sum_HB, HBzem; // symma bapometp.vusot Na etape ZEMLJA, nokazaNija bapometr.vusotomepa Na zemle

// 1-i paschet An (do fopmip.PK etan noleta/pej.pabotu obopyd.)

ReadSSFK(); // chteNie slova sostojaNia faila-kopii

if (!(sst_fk & FRM_CP_1)) // 1-i paschet An vunolNeN?

{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // fail-konija obpabotaN?

{ p_AP[QS]->fz[n_kdr] = APOL.Weight + p_AP[QT]->fz[n_kdr]; // paschet vesa samoleta

WriteFizAP(n_kdr, p_AP[QS]->cn, p_AP[QS]->fz[n_kdr]); // zanis vesa samoleta v fail-koniu

p_AP[dHG]->fz[n_kdr] = (n_kdr > 0)? (p_AP[HG]->fz[n_kdr] - p_AP[HG]->fz[n_kdr-1])/2 : 0; // paschet i zanis npoizvodN. HG

WriteFizAP(n_kdr, p_AP[dHG]->cn, p_AP[dHG]->fz[n_kdr]);

}

WriteSSFK(FRM_CP_1); // zanis slova sostojaNia v fail-koniju (zaglysheNa npi otladke)

}

// 1-e fopmipovaNie PK etan noleta/peg.pabotu obopyd.

ReadSSFK(); // chteNie slova sostojaNia faila-kopii

if ((sst_fk & FRM_CP_1) && !(sst_fk & FRM_IRK_1)) // 1-e fopmipovaNie PK vunolNeNo?

{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // fopmipovaNie i zanis npizNaka ZEMLJA

FrmIRK(p_RK[IRK1], pZEM, (p_AP[dHG]->fz[n_kdr] <= .0) && (p_AP[HG]->fz[n_kdr] <= 3), 6, NO_EXTREMUM, n_kdr);

WriteSSFK(FRM_IRK_1);

}

// 2-i paschet An (nosle fopmip.PK etan noleta/pej.pabotu obopyd.

ReadSSFK(); // chteNie slova sostojaNia faila-kopii

if (!(sst_fk & FRM_CP_2) && (sst_fk & FRM_IRK_1))

{ sum_HB = count_HB = 0;

for (n_kdr=0; n_kdr < dl_fk; n_kdr++)

if (p_RK[IRK1]->fz[pZEM][n_kdr]) // etap ZEMLJA?

{ sum_HB += p_AP[HB]->fz[n_kdr]; // symma bapometp.vusot

count_HB++; // modifikacija schetchika bapometp.vusotu

}

if (count_HB)

HBzem = sum_HB/count_HB; // paschet nokazaNija bapometr.vusotomepa Na zemle

for (n_kdr=0; n_kdr < dl_fk; n_kdr++)

{ if (p_RK[IRK1]->fz[pZEM][n_kdr]) // paschet i zanis otNositelNoi bapometp.vysotu

p_AP[HBotn]->fz[n_kdr] = 0;

else

{ p_AP[HBotn]->fz[n_kdr] = p_AP[HB]->fz[n_kdr] - HBzem;

if (p_AP[HBotn]->fz[n_kdr] < 0)

p_AP[HBotn]->fz[n_kdr] = 0;

}

WriteFizAP(n_kdr, p_AP[HBotn]->cn, p_AP[HBotn]->fz[n_kdr]);

}

WriteSSFK(FRM_CP_2);

}

// 2-e fopmipovaNie PK etan noleta/pej.pabotu obopyd.

ReadSSFK(); // chteNie slova sostojaNia faila-kopii

if ((sst_fk & FRM_CP_2) && !(sst_fk & FRM_IRK_2))

{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // fopmipovaNie i zanis npizNaka NACHALNyI NAbOP VUSOTU NA VZLETE

FrmIRK(p_RK[IRK1],pWZLv,(!p_RK[IRK1]->fz[pZEM][n_kdr])&&p_AP[HBotn]->fz[n_kdr]<APOL.H_kr_wzl,6,NO_EXTREMUM, n_kdr);

WriteSSFK(FRM_IRK_2);

}

// fopmipovaNie sobutia o NapysheNii

ReadSSFK(); // chteNie slova sostojaNia faila-kopii

if ((sst_fk & FRM_IRK_2) && !(sst_fk & FRM_SB))

{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // sobutie N 9

FrmIRK(p_RK[SOB], S9, p_RK[IRK1]->fz[pZEM][n_kdr] && (p_AP[QS]->fz[n_kdr] < 54.8), 6,p_AP[QS]->fz[n_kdr], n_kdr);

WriteSSFK(FRM_SB);

}

}

// RW_SS_FK.cpp - chteNie/zanis slova-sostojaNia faila-konii (13.01.12)

#include <stdio.h> #include <io.h>

#include "c:\temp\kypc_st\def_com.h" #include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\spb_zone.h"

#include "c:\temp\kypc_st\sst_fk.h" #include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\N_error.h"

// chteNie slova sostojaNia faila-konii