Смекни!
smekni.com

Расчет пленочных резисторов в С (стр. 3 из 3)

// минимального элемента исходного массива, а последний элемент индексного

// массива содержит номер максимального элемента исходного массива

// На выход подается номер максимального элемента исходного массива

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

<<»&bsol;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;

}

Результаты тестирования программы


Блок-схема программы контроля вводимых данных