На сайте в режиме реального времени публикуются решения контестных задач сервиса Codeforces.
Загружайте свои решения( здесь ) прямо на сайте. Подробнее. Жду ваших решений
 

По разделам

 

Задача Proc 41


Описать функцию Sin1(x, ε) вещественного типа (параметры x, ε —
вещественные, ε > 0), находящую приближенное значение функции sin(x):
sin(x) = x − x
3
/(3!) + x
5
/(5!) − . . . + (−1)n
·x
2·n+1/((2·n+1)!) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Sin1 найти приближенное значение синуса для данного x при шести
данных ε.

Код (C/C++)

#include <stdio.h>

float sin1(float x, float e){
    float xi=x,ni=1,rez=0,temprez=x;
    int i=1,znak=1;
 
    while(temprez > e){
 
        temprez=xi/ni;
        rez+=znak*temprez;
        znak*=-1;
        xi*=x;
        xi*=x;
        ++i;
        ni*=i;
        ++i;
        ni*=i;
        printf("%f\n%f\n",xi,ni);
    }
    return rez;
}
 
int main(void)
{
    float x,e;
    printf("X:");
    scanf("%f", &x);
    int i;
    for(i=1;i<=6;++i){
        printf("E: ");
        scanf("%f", &e);
        printf("Sin: %f\n",sin1(x,e));
    }
    return 0;
}

Код (Python)

import random
import math

def Sin1(x,eps):
    if eps <= 0:
        print("Epsilon should be greater than 0")
    y = x
    f = x
    i = 3
    while abs(y) > eps:
        y *= (-1) * x * x / ((i-1)*i)
        i += 2
        f += y
    return f

eps = 0.01
for i in range(0, 6):
    #x = -0.5
    #x = 2
    x = math.pi / 4
    print("eps = ", eps, "; sin(",x,") = ",Sin1(x,eps),";",math.sin(x))
    eps /= 10
									

Код (Pascal)

program Proc41;
 
Function Sin1(x,e:Real):Real;
var
 Znak,i:integer;
 xi,ni:Real;
 TempRez,Rez:Real;
begin
 xi:=1;
 i:=0;
 ni:=1;
 Znak:=-1;
 Rez:=0;
 TempRez:=x;
 
 While (abs(TempRez) > e) do
  begin
   if odd(i) then
    begin
     Znak:=Znak*(-1);
     Rez:=Rez+Znak*TempRez;
    end;
   inc(i);
   xi:=xi*x;
   ni:=ni*i;
  if odd(i) then
   begin
    TempRez:=xi/ni;
   end;
  end;
 Sin1:=Rez;
end;
 
 
var
  X,E:real;
  i: integer;
 
begin
   Write('X :');
   Readln(X);
   for i:=1 to 6 do
    begin
     Write('E :');
     Readln(E);
     Writeln(Sin1(X,E));
    end;
end.
									




Proc. Абрамян
Proc 1 Просмотров: 14
Proc 2 Просмотров: 14
Proc 3 Просмотров: 12
Proc 4 Просмотров: 13
Proc 5 Просмотров: 16
Proc 6 Просмотров: 10
Proc 7 Просмотров: 14
Proc 8 Просмотров: 13
Proc 9 Просмотров: 13
Proc 10 Просмотров: 12
Proc 11 Просмотров: 15
Proc 12 Просмотров: 12
Proc 13 Просмотров: 12
Proc 14 Просмотров: 16
Proc 15 Просмотров: 13
Proc 16 Просмотров: 11
Proc 17 Просмотров: 24
Proc 18 Просмотров: 13
Proc 19 Просмотров: 15
Proc 20 Просмотров: 11
Proc 21 Просмотров: 14
Proc 22 Просмотров: 12
Proc 23 Просмотров: 11
Proc 24 Просмотров: 13
Proc 25 Просмотров: 11
Proc 26 Просмотров: 13
Proc 27 Просмотров: 18
Proc 28 Просмотров: 19
Proc 29 Просмотров: 25
Proc 30 Просмотров: 26
Proc 31 Просмотров: 13
Proc 32 Просмотров: 14
Proc 33 Просмотров: 13
Proc 34 Просмотров: 20
Proc 35 Просмотров: 11
Proc 36 Просмотров: 12
Proc 37 Просмотров: 12
Proc 38 Просмотров: 12
Proc 39 Просмотров: 14
Proc 40 Просмотров: 11
Proc 41 Просмотров: 14
Proc 42 Просмотров: 12
Proc 43 Просмотров: 12
Proc 44 Просмотров: 13
Proc 45 Просмотров: 15
Proc 46 Просмотров: 11
Proc 47 Просмотров: 12
Proc 48 Просмотров: 14
Proc 49 Просмотров: 11
Proc 50 Просмотров: 13
Proc 51 Просмотров: 20
Proc 52 Просмотров: 12
Proc 53 Просмотров: 14
Proc 54 Просмотров: 11
Proc 55 Просмотров: 14
Proc 56 Просмотров: 10
Proc 57 Просмотров: 11
Proc 58 Просмотров: 13
Proc 59 Просмотров: 10
Proc 60 Просмотров: 12

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться