Пример программы

 

//Вычислить π/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