Advertisement
Guest User

Lab

a guest
Oct 17th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.62 KB | None | 0 0
  1. /*                             Лабораторная работа №3
  2.                            Выполнила Пена Анастасия, группа БПМ 191
  3. */
  4. #include <math.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. long fact(long f) {          //функция вычисления факториала
  8.     long F=1, F1=1;
  9.     while (F<=f) {
  10.         F1*=F;
  11.         F+=1;
  12.     }
  13.     return F1;
  14. }
  15. int func1() {                 //функция для подсчёта значения с заданной точностью
  16.     double T,x,d,D;
  17.     int n=1;
  18.     long double s=0.0;
  19.     printf("Этап 2:\nВведите значение x (при этом |x| < 1): ");
  20.     if (scanf("%lf",&x)==0 || fabs(x)>=1) {
  21.         printf("Ошибка ввода! Закрытие программы.");
  22.         exit(0);
  23.     }
  24.     else {
  25.         printf("Этап 3:\nВведите число, задающее точность: ");
  26.         if (scanf("%lf",&T)==0) {
  27.             printf("Ошибка ввода! Закрытие программы");
  28.             exit(0);
  29.         }
  30.         else {
  31.             d=(pow(-1,n))*(((pow(3,(2*n-1))-3)*(powf(x,(2*n+1))))/(fact(2*n+1)));
  32.             D=(pow(-1,n+1))*(((pow(3,(2*(n+1)-1))-3)*(powf(x,(2*(n+1)+1))))/(fact(2*(n+1)+1))) - d;
  33.             for (n; fabs(D)>=T; n++) {
  34.                 d=(pow(-1,n))*(((pow(3,(2*n-1))-3)*(powf(x,(2*n+1))))/(fact(2*n+1)));
  35.                 s+=d;
  36.                 D=(pow(-1,n+1))*(((pow(3,(2*(n+1)-1))-3)*(powf(x,(2*(n+1)+1))))/(fact(2*(n+1)+1))) - d;
  37.             }
  38.         }
  39.     }
  40.     return printf("Результат вычислений с заданной точностью: %Lf",s/4);
  41. }
  42. int func2() {        //функция для расчёта значения с заданным количеством членов ряда
  43.     double x,d;
  44.     long double s=0.0;
  45.     int N,n=1;
  46.     printf("Этап 2:\nВведите значение x (при этом |x| < 1): ");
  47.     if (scanf("%lf",&x)==0 || fabs(x)>=1) {
  48.         printf("Ошибка ввода! Закрытие программы.");
  49.         exit(0);
  50.     }
  51.     else {
  52.         printf("Этап 3:\nВведите целое число, задающее количество членов последовательности (N>0): ");
  53.         if (scanf("%d",&N)==0 || N<=0) {
  54.            printf("Ошибка ввода! Закрытие программы.");
  55.            exit(0);
  56.         }
  57.         else {
  58.             for (n; n<N;n++) {
  59.                 s+=(pow(-1,n))*(((pow(3,(2*n-1))-3)*(powf(x,(2*n+1))))/(fact(2*n+1)));
  60.             }
  61.         }
  62.     }
  63.     return printf("Результат вычислений с заданным количеством членов: %Lf",s/4);
  64. }
  65. int main() {
  66.     int c;
  67.     long double s;
  68.     printf("В данной программе от пользователя требуется выбрать один из способов подсчёта выражения.\nВ случае ошибочного ввода программа автоматически закроется.\nЭтап 1:\nВыберите способ расчёта:\nЧтобы вычислить значение, задав точность, введите 1\nЧтобы задать количество членов ряда, нажмите 2\nВведите одно из указанных чисел: ");
  69.     scanf("%d",&c);
  70.     if (c==1) {
  71.         func1(&s);
  72.     }
  73.     if (c==2) {
  74.         func2(&s);
  75.     }
  76.     if (c!=1 && c!=2) {
  77.         printf("Ошибка ввода! Закрытие программы. ");
  78.         exit(0);
  79.     }
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement