Пример программы
//Вычислить π/4=1 - 1/3 + 1/5 - 1/7 +..для различных значений точности.
//Результаты представить в виде таблицы:
//точность, сумма, количество слагаемых, контрольное значение.
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<limits.h>
void windo(int x1,int y1,int x2,int y2,int colf,int colb);
void main()
{int vid, n;
float eps, epsn, epsk, h, pr, rez;
textbackground(BLACK) ;
clrscr() ;
for(;;)
{windo(20,1,55,6,3,15);
gotoxy((55 - 20 - 13) / 2,1);
//Ввод исходных данных
cprintf("Вид действия:\n\r");
cprintf("\r\n 1 - получение таблицы значений\n\r");
cprintf(" 2 - завершение программы\n\r");
cprintf(" Выберите вид действия ->");
scanf("%d",&vid);
if (vid == 1)
{window(1,1,80,25);
textbackground(BLACK);
clrscr();
windo(20,1,55,6,3,15);
gotoxy((55 - 20 - 13) / 2,1);
cprintf("Вид действия:\n\r");
cprintf("\r\n 1 - получение таблицы значений\n\r");
cprintf(" 2 - завершение программы\n\r");
cprintf(" Выберите вид действия ->");
windo(20,8,55,12,2,15);
gotoxy((55 - 20 - 21) / 2,1);
cprintf("Ввод исходных данных:");
//Ввод исходных данных
cprintf("\r\n Введите нач знач точн ");
// \r для возврата в начало строки (в случае наличия окон)
scanf("%f", &epsn);
if((epsn <= 0) || (epsn > 0.1))
{windo(10,13,45,15,4,15);
cprintf("\n Ошибка! Значение д.б. >0 и <0.1");
getchar();getchar();
return;
}
cprintf("\r Введите кон знач точн ");
scanf("%f", &epsk);
if((epsk <= 0) || (epsk > 0.1))
{windo(10,13,45,15,4,15);
cprintf("\n Ошибка! Значение д.б. >0 и <0.1");
getchar();getchar();
return;
}
cprintf("\r Введите шаг измен точн ");
scanf("%f", &h);
if(h <= 0)
{windo(10,13,45,15,4,15);
cprintf("\n Ошибка! Значение д.б. >0");
getchar();getchar();
return;
}
//Вывод заголовка таблицы
windo(10,13,65,25,4,15);
gotoxy((65 - 10 - 10) / 2,1);
cprintf("Результат:");
cprintf("\r\n Точность| Сумма |Кол.слаг.|Контр значен\n\r");
//Вычисление суммы
eps =epsn;
do{n = 0;
rez = 0;
pr = 1;
while (fabs(pr) > eps)
{rez += pr;
n++;
pr *= - (2 * n - 1.) / (2 * n + 1);
if(n >= INT_MAX)
{cprintf("\r Точность не достигнута!!");
getchar();getchar();
return;
}
}
cprintf(" %9.6f%12.8f%8i%15.8f\n\r",eps,rez,n,M_PI / 4);
eps += h;
}while(eps <= epsk);
}
else break;
}
}
//Вывод окна на экран
void windo(int x1,int y1,int x2,int y2,int colf,int colb)
{window(x1, y1, x2, y2);
textbackground(colf);
textcolor(colb);
clrscr();
}
Лабораторная работа №6