getch();
}
Набор входных данных1: key=G
Результат работы программы:
Введите полупроводниковый материал:
G - германий
S - кремний
A - арсенид галлия
G
n_i = 1.663797e+79
L_D = 2.107703e+42
eps = 16
E_g = 0.67
n_i0 = 2.4e+13
Набор входных данных2: key=S.
Результат работы программы:
Введите полупроводниковый материал:
G - германий
S - кремний
A - арсенид галлия
S
n_i = 1.673979e+120
L_D = 5.765643e+62
eps = 11.9
E_g = 1.12
n_i0 = 1.45e+10
Набор входных данных3: key=A
Результат работы программы:
Введите полупроводниковый материал:
G - германий
S - кремний
A - арсенид галлия
A
n_i = 6.010768e+146
L_D = 1.146304e+76
eps = 13.1
E_g = 1.43
n_i0 = 1790000
Набор входных данных4: key=H
Результат работы программы:
Введите полупроводниковый материал:
G - германий
S - кремний
A - арсенид галлия
H
Такого материала нет!
n_i = 0
L_D = 0
eps = 0
E_g = 0
n_i0 = 0
8. Разработать программу для вычисления корней кубического уравнения. Формульное описание алгоритма приведено в Приложении 1 и файле Root3_alg_text.doc, а его блок-схема – в Приложении 2 и файле Root3_alg_block.doc. Отладить работу всех ветвей программы с помощью тестовых данных, приведенных в Приложении 3 и файле Root3data.doc. При отладке использовать пошаговое исполнение программы с помощью отладчика (клавиша <F8>).
Структура входных и выходных данных следующая:
a, b, c, d – коэффициенты кубического уравнения. x1, x2, x3 – найденные корни. Входные данные жестко вшиты в клавиатуру.
Текст программы:
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
double a,b,c,d;
double p,q,r,y1,y2,x1,x2,x3,y3,z,D,fi,Z,u,v,w;
int k;
a=2.0; b=-10.0; c=18.0; d=-10.0;
p=(3.0*a*c-b*b)/(3.0*a*a)/3.0;
q=(2.0*b*b*b/(27.0*a*a*a)-b*c/(3.0*a*a)+d/a)/2.0;
if(p==0)
{
y1=y2=y3=pow(-2.0*q,1.0/3.0);
k=0;
}
else
{
if(q>0)
r=sqrt(fabs(p));
if(q<0)
r=-sqrt(fabs(p));
z=q/(r*r*r);
if(p<0)
{
D=q*q+p*p*p;
if(D<=0)
{
fi=acos(z);
y1=-2.0*r*cos(fi/3.0);
y2=2.0*r*cos(M_PI/3.0-fi/3.0);
y3=2.0*r*cos(M_PI/3.0+fi/3.0);
k=0;
}
else
{
fi=log(z+sqrt(z*z-1.0));
y1=-2.0*r*cosh(fi/3.0);
u=r*cosh(fi/3.0);
v=sqrt(3.0)*r*sinh(fi/3.0);
k=1;
}
}
else
{
fi=log(z+sqrt(z*z+1.0));
y1=-2.0*r*sinh(fi/3.0);
u=r*sinh(fi/3.0);
v=sqrt(3.0)*r*cosh(fi/3.0);
k=1;
}
}
w=b/(3.0*a);
x1=y1-w;
if(k==0)
{
x2=y2-w;
x3=y3-w;
}
else
Z=u-w;
clrscr();
if(k==0)
{
cout<<"k = "<<k<<endl;
cout<<"x1 = "<<x1<<endl;
cout<<"x2 = "<<x2<<endl;
cout<<"x3 = "<<x3<<endl;
}
else
{
cout<<"k = "<<k<<endl;
cout<<"x1 = "<<x1<<endl;
cout<<"x2 = "<<Z<<"+i*"<<v<<endl;
cout<<"x3 = "<<Z<<"-i*"<<v<<endl;
}
getch();
}
Набор входных данных1: a=2.0; b=3.0; c=1.5; d=-15.75
Результат работы программы:
k = 0
x1 = 1.5
x2 = 1.5
x3 = 1.5
Набор входных данных2: a=1.5; b=-3.0; c=-7.5; d=9.0.
Результат работы программы:
k = 0
x1 = -2
x2 = 3
x3 = 1
Набор входных данных3: a=1.0; b=4.0; c=-10.75; d=7.5.
Результат работы программы:
k = 1
x1 = -6
x2 = 1+i*0.5
x3 = 1-i*0.5
Набор входных данных4: a=2.0; b=-10.0; c=18.0; d=-10.0.
Результат работы программы:
k = 1
x1 = 1
x2 = 2+i*1
x3 = 2-i*1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.