9. Додатки
Додаток А. Текст програми на мові С++
#include <iostream>//Організація введення, виведення (cout, cin)
#include <math.h>//Математична бібліотека (sqrt () ...)
#include <conio.h>//Бібліотека для використання функції getch ()
using namespace std;
//Прототипи функції
double kf(double, double); //Обчислення коеф. форм. к-того резистора
double max_d(double, double, double); //Обчислення максимальної ширини
void Cal_pr_fo_bl(); //Розрахунок резистора прямокутної форми b>l
void Cal_pr_fo_lb(); //Розрахунок резистора прямокутної форми l>b
int i, k, Vv=0, povt=0, stp=0;//Глобальні змінні цілого типу
const double b_tex = 0.1, l_tex = 0.3, Db = 0.01, Dl = 0.03, Yr = 0.1, a_min = 0.3, h = 0.01;//Константи вещ. типу
const int m = 10;//Константа цілого типу
double R[m];//Номінальний опір резистора
double pO[m];//Опір квадрата резистивної плівки
double P[m];//Потужність розсіювання резистора
double Po[m];//Макс. питома потужність розсіювання резистивної плівки
double N;//Кількість резисторів
double kfe[m];//Коф. форм. к-того резистора
double l[m];//Довжина резистора
double b[m];//Ширина резистора
double X[m];//Довжина меандра
double Y[m];//Ширина меандра
double bD;//Мінімальна ширина резистора
double bpot;//Ширина задана потужністю
double lD;//Мінімальна довжина резистора
double lpot;//Довжина задана потужністю
double lser;//Середня лінія меандра
double piz;//Допоміжна змінна для рахунку к-того резистора
double maxb=0;//Максимальна ширина b
char Otv;// [Y/N]
double a[m];//Відстань між смугами
double t[m];//Крок ланки
double n[m];//Число ланок
double max_b(double a, double b, double c)//Обчислення максимальної ширини
{
if (a>b&&a>c)
return a;
if (b>a&&b>c)
return b;
else return c;
}
void Cal_pr_fo_bl()//Розрахунок резистора прямокутної форми b>l
{
bD=(Db+Dl/kfe[i])/Yr;
bpot=sqrt((pO[i]*P[i])/(R[i]*Po[i]));
b[i]=max_b(b_tex, bD, bpot);
l[i]=kfe[i]*b[i];
b[i]=int(b[i]/h)*h+h;
l[i]=int(l[i]/h)*h+h;
cout<<"\n Ширина резистора, b = "<<b[i]<<" мм"<<endl;
cout<<" Довжина резистора, l = "<<l[i]<<" мм"<<endl;
}
void Cal_pr_fo_lb()//Розрахунок резистора прямокутної форми l>b
{
lD=(Dl+kfe[i]*Db)/Yr;
lpot=sqrt((R[i]*P[i])/(pO[i]*Po[i]));
l[i]=max_b(l_tex, lD, lpot);
b[i]=l[i]/kfe[i];
l[i]=int(l[i]/h)*h+h;
b[i]=int(b[i]/h)*h+h;
cout<<"\n Ширина резистора, b = "<<b[i]<<" мм"<<endl;
cout<<" Довжина резистора, l = "<<l[i]<<" мм"<<endl;
}
double kf(double a, double b)//Обчислення коеф. форм. к-того резистора
{
return a/b;
}
void main () //Головна функція
{
setlocale(LC_ALL, "Ukrainian");
cout<<"\t\t\tТабл. №1"<<endl;
cout<<" _____________________________________________________"<<endl;
cout<<"| | | | |"<<endl;
cout<<"| R, кОм | p, кОм/кв | P, мВт | Po, мBт/мм2 |"<<endl;
cout<<"|_______________|___________|___________|_____________|"<<endl;
cout<<"| | | | |"<<endl;
cout<<"| 0.05...10000 | 0,01...50 | 5...50 | 10...30 |"<<endl;
cout<<"|_______________|___________|___________|_____________|"<<endl;
cout<<"\n"<<endl;
while (1)
{
cout<<"Задайте кiлькiсть резисторiв для розрахунку [max 10] = ";
cin>>N;
if (N>=1 && N<=10)
break;
}
for (i=0; i<N; i++)
{
while (1)
{
cout<<"\n\tРезистор №"<<i+1<<endl;
cout<<"Номiнальний опiр резистора, [кОм] R = ";
cin>>R[i];
cout<<"Опiр квадрата резистивної плiвки, [кОм/кв] p = ";
cin>>pO[i];
cout<<"Потужнiсть розсiювання резистора, [мВт] P = ";
cin>>P[i];
cout<<"Макс.питома потужнiсть розсiювання резистивної плiвки, [мBт/мм2] Po = ";
cin>>Po[i];
cout<<endl;
cout<<"Початковi даннi вiдповiдают данним Табл. №1 ? [Y/N] = ";
cin>>Otv;
if (Otv=='Y' || Otv=='y')
break;
}
}
for (i=0; i<N; i++)
{
PS:
kfe[i]=kf(R[i], pO[i]);
if (1<=kfe[i] && kfe[i]<=10)
{
cout<<"\n__________________________________________________________________________"<<endl;
cout<<"\n\tРезистор №"<<i+1<<" -- прямокутрної форми"<<endl;
Cal_pr_fo_bl();
}
else if (0.1<=kfe[i] && kfe[i]<1)
{
cout<<"\n__________________________________________________________________________"<<endl;
cout<<"\n\tРезистор №"<<i+1<<" -- прямокутрної форми в якого ширина меньше довжини (l>d)"<<endl;
Cal_pr_fo_lb();
}
else if (kf(R[i], pO[i])>10)
{
cout<<"\n__________________________________________________________________________"<<endl;
cout<<"\n\tРезистор №"<<i+1<<" -- резистор типу (меандр)"<<endl;
bD=(Db+Dl/kfe[i])/Yr;
bpot=sqrt((pO[i]*P[i])/(R[i]*Po[i]));
b[i]=int(max_b(b_tex, bD, bpot)/h)*h+h;
lser=b[i]*kfe[i];
a[i]=b[i];
if (a[i]<a_min)
a[i]=a_min;
while (1)
{
t[i]=a[i]+b[i];
n[i]=int(sqrt(lser/t[i]));
X[i]=n[i]*(a[i]+b[i]);
Y[i]=(lser-a[i]*n[i])/n[i];
if ((Y[i]/a[i])<=10)
break;
else
a[i]=a[i]+a_min;
}
cout<<"\n Ширина меандри, Y = "<<Y[i]<<" мм"<<endl;
cout<<" Довжина меандри, X = "<<X[i]<<" мм"<<endl;
cout<<" Ширина смушки, b = "<<b[i]<<" мм"<<endl;
cout<<" Вiдстань мiж смужками, a = "<<a[i]<<" мм"<<endl;
cout<<" Число ланок, n = "<<n[i]<<endl;
}
else if (kfe[i]<0.1)
{
cout<<"\n__________________________________________________________________________"<<endl;
cout<<"\tРезистор №"<<i+1<<" -- резистор використовувати не рекомендовано"<<endl;
}
if (pO[i]==piz)
break;
}
if(1<N)
{
if(povt==0)
{
for (i=0; i<N; i++)
{
if(maxb<b[i])
maxb=b[i];
}
cout<<"\nМаксiмальная ширина b = "<<maxb<<" мм"<<endl;
povt++;
}
if (Vv==0)
{
while (1)
{
cout<<"\nВведiть номер резистора для додаткових обчислень = ";
cin>>k;
if(1<=k&&k<=N)
break;
else
cout<<"Цього резистора не iснує"<<endl;
}
k=k-1;
Vv++;
}
}
while (1)
{
cout<<"\nОпiр квадрата резистивної плiвки (для закiнчення обчислень введiть 0), [кОм/кв] p = ";
cin>>piz;
if(piz<=50)
break;
else
cout<<"\n\tMAX 50 [кОм/кв] "<<endl;
}
i=k;
pO[i]=piz;
if (piz!=0)
goto PS;
getch();
system("cls");//Функція очищення екрана
cout<<"\tАвтор програми : Жмуд Е.В."<<endl;
cout<<"\t20.09.2012"<<endl;
getch();
}
- 2. Завдання на курсову роботу
- Загальна частина
- 1. Розрахунок резисторів прямокутної форми
- 2. Розрахунок резистора складної форми
- 3. Розробка алгоритму рішення задачі
- Розробка блок-схеми алгоритму
- 4. Розробка програми
- 5. Тестування і налагоджування програми
- План тестування
- Тестовий приклад
- Налагодження програми
- 6. Документування програми
- 7. Висновки
- 8. Список використаної літератури
- 9. Додатки
- Додаток б. Тестовий приклад (розрахунок на еом)