Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Лабораторная работа №3
- Выполнила Пена Анастасия, группа БПМ 191
- */
- #include <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- long fact(long f) { //функция вычисления факториала
- long F=1, F1=1;
- while (F<=f) {
- F1*=F;
- F+=1;
- }
- return F1;
- }
- int func1() { //функция для подсчёта значения с заданной точностью
- double T,x,d,D;
- int n=1;
- long double s=0.0;
- printf("Этап 2:\nВведите значение x (при этом |x| < 1): ");
- if (scanf("%lf",&x)==0 || fabs(x)>=1) {
- printf("Ошибка ввода! Закрытие программы.");
- exit(0);
- }
- else {
- printf("Этап 3:\nВведите число, задающее точность: ");
- if (scanf("%lf",&T)==0) {
- printf("Ошибка ввода! Закрытие программы");
- exit(0);
- }
- else {
- d=(pow(-1,n))*(((pow(3,(2*n-1))-3)*(powf(x,(2*n+1))))/(fact(2*n+1)));
- D=(pow(-1,n+1))*(((pow(3,(2*(n+1)-1))-3)*(powf(x,(2*(n+1)+1))))/(fact(2*(n+1)+1))) - d;
- for (n; fabs(D)>=T; n++) {
- d=(pow(-1,n))*(((pow(3,(2*n-1))-3)*(powf(x,(2*n+1))))/(fact(2*n+1)));
- s+=d;
- D=(pow(-1,n+1))*(((pow(3,(2*(n+1)-1))-3)*(powf(x,(2*(n+1)+1))))/(fact(2*(n+1)+1))) - d;
- }
- }
- }
- return printf("Результат вычислений с заданной точностью: %Lf",s/4);
- }
- int func2() { //функция для расчёта значения с заданным количеством членов ряда
- double x,d;
- long double s=0.0;
- int N,n=1;
- printf("Этап 2:\nВведите значение x (при этом |x| < 1): ");
- if (scanf("%lf",&x)==0 || fabs(x)>=1) {
- printf("Ошибка ввода! Закрытие программы.");
- exit(0);
- }
- else {
- printf("Этап 3:\nВведите целое число, задающее количество членов последовательности (N>0): ");
- if (scanf("%d",&N)==0 || N<=0) {
- printf("Ошибка ввода! Закрытие программы.");
- exit(0);
- }
- else {
- for (n; n<N;n++) {
- s+=(pow(-1,n))*(((pow(3,(2*n-1))-3)*(powf(x,(2*n+1))))/(fact(2*n+1)));
- }
- }
- }
- return printf("Результат вычислений с заданным количеством членов: %Lf",s/4);
- }
- int main() {
- int c;
- long double s;
- printf("В данной программе от пользователя требуется выбрать один из способов подсчёта выражения.\nВ случае ошибочного ввода программа автоматически закроется.\nЭтап 1:\nВыберите способ расчёта:\nЧтобы вычислить значение, задав точность, введите 1\nЧтобы задать количество членов ряда, нажмите 2\nВведите одно из указанных чисел: ");
- scanf("%d",&c);
- if (c==1) {
- func1(&s);
- }
- if (c==2) {
- func2(&s);
- }
- if (c!=1 && c!=2) {
- printf("Ошибка ввода! Закрытие программы. ");
- exit(0);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement