// минимального элемента исходного массива, а последний элемент индексного
// массива содержит номер максимального элемента исходного массива
// На выход подается номер максимального элемента исходного массива
int sort()
{
int j, jtmp;
int flag;
double btmp;
double *buf;
buf=new double[NRho];
for (j=0; j<NRho; j++)
{
index[j]=j;
buf[j]=ArrBuf[j];
}
do
{
flag=0;
for (j=1; j<NRho; j++)
if (buf[j‑1]>buf[j])
{
jtmp=index[j];
index[j]=index [j‑1];
index [j‑1]=jtmp;
btmp=buf[j];
buf[j]=buf [j‑1];
buf [j‑1]=btmp;
flag=1;
}
}
while(flag);
return index[NRho];
}
// Вывод введенных исходных данных для визуального контроля
void OutParam()
{
int i, j;
cout<<endl;
for (i=0; i<NResist; i++)
{
cout
<<» R»<<i+1<< "="<<ArrR[i]<< «kOm»
<<» P="<<ArrP[i]<< «mW»
<<» Po="<<Po<< «mW/mm2»;
if (modein==1)
{
cout<<» rho={»;
for (j=0; j<NRho‑1; j++)
cout<<ArrRho[j]<<»;»;
cout<<ArrRho [NRho‑1]<<») kOm»<<endl;
}
if((modein==2)|(modein==3))
cout
<<» rho=(«<<RhoBeg
<<»; «<<RhoBeg+RhoStp
<<». «<<RhoEnd<<») kOm/mm2»<<endl;
}
cout<<endl;
}
// Вывод результатов расчета пленочного резистора voidOutResult()
{
switch(type)
{
case 0: // Ошибка Kf<0.1
cout<<«ERROR «<< «Kform=»<<kf<<endl;
break;
case 1:
case 2: // прямоугольнаяпленка 0.1<=Kf<=10
cout<<setw(9)
<<» Rectangle»
<<setprecision(3)
<<» b="<<setw(4)<<b<< «mm»
<<» l="<<setw(4)<<l<< «mm»
<<» S="<<setw(4)<<b*l<< «mm2»
<<» Kf="<<setw(4)<<kf
<<»\tRho="<<setw(6)<<rho<< «kOm/mm2» //rho
<<endl;
break;
case 3:// пленка типа меандр Kf>10
cout<<setw(6)
<<» Meandr»
<<setprecision(3)
<<» b="<<setw(4)<<b<< «mm»
<<» a="<<setw(4)<<a<< «mm»
<<» t="<<setw(4)<<t<< «mm»
<<» x="<<setw(4)<<x<< «mm»
<<» y="<<setw(4)<<y<< «mm»
<<» n="<<setw(2)<<n
<<» Kf="<<setw(4)<<kf
<<» Rho="<<setw(5)<<rho
<<endl;
break;
case 4:
cout<<«ERROR «<< «nc=»<<nc<<endl;
break;
}
}
// Выделение памяти для динамических массивов значений
// сопротивления R и рассеиваемой мощности Pvoidalloc1 ()
{
if (ArrR!=NULL) delete ArrR;
if (ArrP!=NULL) delete ArrP;
ArrR=new double[NResist];
ArrP=new double[NResist];
}
// Выделение памяти для динамических массивов значений
// сопротивления пленки, коэффициентов формы и
// рассчитанных геометричесих параметров пленочного резистора voidalloc2 ()
{
if (ArrRho!=NULL) delete ArrRho;
if (ArrKf!=NULL) delete ArrKf;
if (ArrB!=NULL) delete ArrB;
if (ArrL!=NULL) delete ArrL;
if (ArrA!=NULL) delete ArrA;
if (ArrX!=NULL) delete ArrX;
if (ArrY!=NULL) delete ArrY;
if (ArrT!=NULL) delete ArrT;
if (ArrN!=NULL) delete ArrN;
if (index!=NULL) delete index;
if (ArrBuf!=NULL) delete ArrBuf;
if (ArrType!=NULL) delete ArrType;
ArrRho=new double[NRho];
ArrKf=new double[NRho];
ArrB=new double[NRho];
ArrL=new double[NRho];
ArrA=new double[NRho];
ArrX=new double[NRho];
ArrY=new double[NRho];
ArrT=new double[NRho];
ArrN=new int[NRho];
ArrS=new double[NRho];
ArrType=new int[NRho];
index=new int[NRho];
ArrBuf=new double[NRho];
for (int j=0; j<NRho; j++) ArrS[j]=0;
}
Результаты тестирования программы
Блок-схема программы контроля вводимых данных