Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
9 / 9 / 0
Регистрация: 27.12.2012
Сообщений: 165
1

Массивы

17.11.2013, 17:26. Показов 298. Ответов 1
Метки нет (Все метки)

Добрый день!
Задача:Составить значение функции S(x) по формуле https://www.cyberforum.ru/cgi-bin/latex.cgi?s(x)=\sum_{1}^{5} \frac{bk*{x}^{k+1}}{k!
для х изменяющегося в интервале от 1 до 2-х с шагом 0.2 ,а bk принимает след.значения :1,5 ;2; -5; 8,5; 4,0; -3,5; 3,0;
Выбрать из массива S(x) положительные числа и найти среди них наибольшее.
Мне помогли с составлением программы(за что огромное спасибо),при ее изучении у меня появились вопросы

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
uses crt;
var bk:real;
function s(x:real):real;
var k,i:byte;
    y,c,z:real;
begin
y:=0;{сумма}
for k:=1 to 5 do
 begin
  c:=1;{вычислим x^k+1}
  for i:=1 to k+1 do
  c:=c*x;
 
 
  z:=1;{вычислим обратный факториал} Я не совсем понимаю эту запись,можно объяснить?(Так ни разу не делали,и обратный факториал не считали)
 
 
  for i:=1 to k do
  z:=z/i;
  y:=y+bk*c*z;{добавим результат к сумме}
 end;
s:=y{значение функции}
end;
var n,i:integer;
    m:array[1..100] of real;
    x,mx:real;
begin
clrscr;
{прсчитаем для разных bk для х от 1 до 2}
bk:=1.5;
n:=0;
x:=1;
while x<2.1 do{2.1 потому что за счет округления не попадаем в 2.0}
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
bk:=2;
x:=1;
while x<2.1 do
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
bk:=-5;
x:=1;
while x<2.1 do
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
bk:=8.5;
x:=1;
while x<2.1 do
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
bk:=4;
x:=1;
while x<2.1 do
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
bk:=-3.5;
x:=1;
while x<2.1 do
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
bk:=3;
x:=1;
while x<2.1 do
 begin
  n:=n+1;
  m[n]:=s(x);
  x:=x+0.2;
 end;
writeln('Массив S(x):');
for i:=1 to n do
write(m[i]:8:3);
writeln;
writeln('Положительные числа:');
mx:=0;
for i:=1 to n do
if m[i]>0 then
 begin
  write(m[i]:8:3);
  if m[i]>mx then mx:=m[i]
 end;
writeln;
write('Максимальное=',mx:0:3);
readln
end.
и Еще вопрос ,возможно ли сократить программу,когда используют каждый раз новое значение bk?Как можно это записать?Заранее большое спасибо,за уделенное время!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2013, 17:26
Ответы с готовыми решениями:

Даны массивы а и b. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai
Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы...

Массивы
Program elem; uses crt; const n=12;m=10;p=120; type tvector=array of integer; ...

массивы
пожалуйста срочно помогите.отрицательные элементы массива заменить на сумму.вывести преобразованный...

Массивы
Пожалуйста помогите решить задачу.: Вывести элемент массива с нечётными номерами в порядке...

1
251 / 157 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.11.2013, 03:58 2
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{bk*{x}^{k+1}}{n!}=bk*{x}^{k+1}*\frac{1}{n!}
https://www.cyberforum.ru/cgi-bin/latex.cgi?1/1/2/3.../n=1/n! можно вычислить факториал и поделить на него или вычислить обратный факториал и умножить на него

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var
  n, i: integer;
  m: array[1..100] of real;
  mx: real;
 
function s(x, bk: real): real;
var
  k, i: byte;
  y, c, z: real;
 
begin
  y := 0;{сумма}
  for k := 1 to 5 do
  begin
    c := 1;{вычислим x^k+1}
    for i := 1 to k + 1 do
      c := c * x;
    z := 1;{вычислим обратный факториал}
    for i := 1 to k do
      z := z / i;
    y := y + bk * c * z;{добавим результат к сумме}
  end;
  s := y{значение функции}
end;
 
procedure NewBk(bk: real);
var
  x: real;
 
begin
  x := 1;
  while x <= 2.0 do
  begin
    inc(n);
    m[n] := s(x, bk);
    x := x + 0.2;
  end;
end;
 
begin
  n := 0;
  NewBk(1.5);
  NewBk(2);
  NewBk(-5);
  NewBk(8.5);
  NewBk(4);
  NewBk(-3.5);
  NewBk(3);
  writeln('Массив S(x):');
  for i := 1 to n do
    write(m[i]:8:3);
  writeln;
  writeln('Положительные числа:');
  mx := 0;
  for i := 1 to n do
    if m[i] > 0 then
    begin
      write(m[i]:8:3);
      if m[i] > mx then mx := m[i]
    end;
  writeln;
  write('Максимальное=', mx:0:3);
  readln
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2013, 03:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Массивы
Написать программу, которая заменяет все заглавные буквы строчными, а строчные – заглавными в...

Массивы
Подскажите как в программе записать следующие строки? Определить с помощью FUNCTION для каждого...

массивы
ребят послезавтра зачет я уже 2 дня ломаю голову над след. задачами а вам наверно делов на 5...

Массивы
Даны натуральные числа a1, a2, ..., an. Указать те, у которых остаток от деления на М равен L (0...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.