Распечатка текста программы
Printf («В интервале корня нет! «, g, s); Return getmaxy () — (y-y_min)/(y_max-y_min)*getmaxy (); Printf («Введите коэффициенты: a=»); Pol_del.cpp — главный файл проекта. Printf («Введите точность eps:»); Float x, f1, f2, fm, x1, g, s, f, pog, pog1, j, t; Printf («Введите границы: gr1=»); Void Point (float x, float y, int color){. A=-sign®*pow (fabs®+sqrt (R1-Q1), 0.33); Setlocale (LC_CTYPE… Читать ещё >
Распечатка текста программы (реферат, курсовая, диплом, контрольная)
Комментарии к файлу хранятся в исходнике.
Pol_del.cpp — главный файл проекта.
#include.
#include.
#include.
#include.
#include.
#include.
const int X0=400, Y0=300, k=100;
const float pi=3.14;
int n=0, v, n_max, n1;
float a, b, c, gr1, gr2, eps;
float q, r, Q, R, m, A, B, R1, Q1;
float x, f1, f2, fm, x1, g, s, f, pog, pog1, j, t;
float F1(float x){.
return a*x*x*x+b*x+c;
}.
float F2(float x){.
return a*sin (x+b)+c;
}.
float F3(float x){.
return a*log (fabs (x+b))+c;
}.
float sign (float x){.
if (x==0)return 0;
if (x>0) return 1;
else return -1;
}.
#include" graphic. cpp" .
main () {.
setlocale (LC_CTYPE, «Russian»);
printf («Выберите уравнение: 1) y=a*x*x*x+b*x+c 2) y=a*sin (x+b)+c 3) y=a*ln|x+b|+c Ввод:»);
scanf («%d», &v);
switch (v).
{.
case 1: break;
case 2: break;
case 3: break;
default:printf («Введен неверное значение! Программа закрывается! «);
system («pause»);
exit (0);
}.
fflush (stdin);
printf («Введите точность eps:»);
while (!scanf («%f», &eps)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! Введите точность eps:»);
}.
if (eps<0||eps==0){.
printf («Точность не может быть отрицательной или равной нулю! Программа закрывается! «);
system («pause»);
exit (0);
}.
fflush (stdin);
printf («Введите границы: gr1=»);
while (!scanf («%f», &gr1)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! gr1=»);
}.
fflush (stdin);
printf («gr2=»);
while (!scanf («%f», &gr2)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! gr2=»);
}.
if (gr1>gr2){.
s=gr1;
g=gr2;
gr1=g;
gr2=s;
}.
g=gr1;
s=gr2;
fflush (stdin);
printf («Введите коэффициенты: a=»);
while (!scanf («%f», &a)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! a=:»);
}.
fflush (stdin);
printf («b=»);
while (!scanf («%f», &b)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! b=»);
}.
fflush (stdin);
printf («c=»);
while (!scanf («%f», &c)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! c=:»);
}.
fflush (stdin);
printf («Введите максимальное число делений:»);
while (!scanf («%d», &n_max)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! Введите максимальное число делений:»);
}.
if (n_max<0||n_max==0){.
printf («Количество делений не может быть вещественным числом или меньше, либо равным нулю! Программа закрывается! «);
system («pause»);
exit (0);
}.
fflush (stdin);
switch (v).
{case 1:
while (fabs (gr2-gr1)>eps){.
n++;
x=(gr1+gr2)/2;
f1=F1(x);
f2=F1(gr2);
if (fabs (f1).
{break;}.
if (f2*f1<0).
{gr1=x;}.
else.
{gr2=x;}.
}.
if (a==0&&b≠0){.
x1=-c/b;
break;
}.
if (a≠0){.
q=b/a;
r=c/a;
Q=-(3*q)/9;
R=(27*r)/54;
Q1=pow (Q, 3);
R1=pow (R, 2);
if (R1.
{m=acos (R/sqrt (Q1))/3;
x1=-2*sqrt (Q)*cos (m);
}.
if (R1>=Q1).
{A=-sign®*pow (fabs®+sqrt (R1-Q1), 0.33);
if (A≠0).
{B=Q/A;
}.
if (A==0).
{B=0;
}.
x1=(A+B);
}.
}.
if (!((g=x1))||a==0&&b==0){.
printf («В интервале [%.3f;%.3f] корня нет! «, g, s);
system («pause»);
exit (0);
}.
x=(gr2+gr1)/2;
fm=F1(x);
break;
case 2:
while (fabs (gr2-gr1)>eps){.
n++;
x=(gr1+gr2)/2;
f1=F2(x);
f2=F2(gr2);
if (fabs (f1).
{break;}.
if (f2*f1<0).
{gr1=x;}.
else.
{gr2=x;}.
}.
if (c/a>1||c/a<-1){.
printf («В интервале [%.3f;%.3f] корня нет! «, g, s);
system («pause»);
exit (0);
}.
if (!((g=x1))||a==0){.
printf («В интервале [%.3f;%.3f] корня нет! «, g, s);
system («pause»);
exit (0);
}.
x=(gr2+gr1)/2;
for (n1=0;n1<=1000;n1++).
{.
j=-asin (c/a)-b-pi*n1;
if (((x-0.03*x)=j)){.
x1=j;
}.
}.
for (n1=0;n1<=1000;n1++){.
j=-asin (c/a)-b+pi*n1;
if (((x-0.03*x)=j)){.
x1=j;
}.
}.
fm=F2(x);
break;
case 3:
while (fabs (gr2-gr1)>eps){.
n++;
x=(gr1+gr2)/2;
f1=F3(x);
f2=F3(gr2);
if (fabs (f1).
{break;}.
if (f2*f1<0).
{gr1=x;}.
else.
{gr2=x;}.
}.
x1=pow (M_E, (-c/a))-b;
if (!((g=x1))||a==0){.
printf («В интервале [%.3f;%.3f] корня нет! «, g, s);
system («pause»);
exit (0);
}.
if (gr2+b<0){.
printf («В интервале [%f;%f] корня нет! «, g, s);
system («pause»);
exit (0);
}.
x=(gr2+gr1)/2;
fm=F3(x);
break;
}.
pog1=fabs (x-x1);
if (x1>x){.
pog=fabs ((x-x1)/x1)*100;
}.
if (x==0&&x1==0){.
pog=0;
}.
else{.
pog=fabs ((x1-x)/x)*100;
}.
if (n>n_max){.
printf («За %d шаг (ов) корень не найден. Продолжаем? 1) Да 2) Нет Ввод:», n_max);
while (!scanf («%d», &t)){.
while (getchar () ≠ ' ');
printf («Ошибка ввода! Попробуйте снова! Ввод:»);
}.
if (t==1){.
printf («Приближенное x=%.3f F (x)=%.3f Количество делений n=%d Точное x=%.3f Абсолютная погрешность=%.3f Относительная погрешность=%.3f%% «, x, fm, n, x1, pog1, pog);
system («pause»);
}.
if (t==2){.
printf («Корень не подсчитан! Программа закрывается! «);
system («pause»);
exit (0);
}.
else{.
printf («Неверный ввод! Программа закрывается! «);
system («pause»);
exit (0);
}.
}.
else{.
printf («Приближенное x=%.3f F (x)=%.3f Количество делений n=%d Точное x=%.3f Абсолютная погрешность=%.3f Относительная погрешность=%.3f%% «, x, fm, n, x1, pog1, pog);
system («pause»);
}.
initwindow (800, 600);
Axes ();
Plot ();
getch ();
closegraph ();
}.
graphic.cpp — отображение графиков функций и процесс вычисления корня.
float ScreenX (float x){.
return (x-g)/(s-g)*getmaxx ();
}.
float ScreenY (float y){//перевод y в координаты экрана.
float y_min, y_max;
y_min=-(600-Y0)/k;
y_max=Y0/k;
return getmaxy () — (y-y_min)/(y_max-y_min)*getmaxy ();
}.
void Point (float x, float y, int color){.
float xe, ye;
xe=ScreenX (x);
ye=ScreenY (y);
if (xe>=0&&xe=0&&ye<600).
putpixel (xe, ye, color);
}.
void Plot (){.
float x, h, x_min, x_max;
h=0.0001;//шаг.
for (x=g;x<=s;x+=h).
switch (v).
{.
case 1:
Point (x, F1(x), RED);
break;
case 2:
Point (x, F2(x), RED);
break;
case 3:
Point (x, F3(x), RED);
break;
}.
}.
void Axes ().
{.
setcolor (8);
line (400, 0, 400, 599);
line (0, 300, 799, 300);
}.