Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69

Вычисления значения функций

11.10.2022, 16:00. Показов 4164. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите разобраться проблемой.
1.Нужно написать программу вычисляющие значение функций:
(x / ln(x))*(-x/cos(x)), если x < -6;
x*3*x+cos(x)/lg(x), если -6 <=x<1;
cos(x)/x^3, если 1<=x<4;
cos(2*x)*68+lg(x)/x^3, если 4<=x.
2.Вычислить значение функций на интервале [-8,6] с шагом 0.1
Я написала следующее
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
program Firtlab;
uses crt,math;
var x,y:real;
 k:integer;
 begin
        clrscr;
        x:=-8;
        k:=0;
        while x<=6 do
        begin
        if x<-6 then writeln ('x=', y:0:1,' y= not defined ')
        else if x<1 then
        begin
        y:=cos(x);
        writeln('x=',x:0:1,'y=',y:6:3)
        end
        else if x<4 then
        begin
        if x<=0 then writeln('x=',x:0:1,' y= not defined')
        else
        begin
        y:=cos(x)/sqr(x);
        writeln('x=',x:0:1,'y=',y:6:3);
        end
        end
        else
        begin
        y:=cos(2*x)*68+ln(x)/sqr(3);
        writeln('x=',x:0:1,' y=not defined ',y:6:3)
        end;
        x:=x+0.1;
        inc(k);
        if k mod 20=0 then
        begin
        write('Press Enter');
        readln
        end;
        end;
        readln
        end.
И программа мне выдает вот это
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
x=0.0 y= not defined
Press Enter

Помогите разобраться в чем дело.Оно не так должно работать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2022, 16:00
Ответы с готовыми решениями:

Составить программу вычисления значения функций

Составить программу для вычисления значения функций f(x)
Заранее спасибо :)

Написать программу для вычисления значения заданных функций
Помогите с решением, написать программу для вычисления значения заданных функций.

53
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
05.11.2022, 23:33
Студворк — интернет-сервис помощи студентам
Ещё.
Попробуйте воспользоваться автоформаттером исходника
https://www.cyberforum.ru/post8121738.html

После форматирования видно, что writeln выполняется после цикла, а не в теле цикла - из-за того, что не хватает операторных скобок begin-end
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
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x: integer;
  y: real;
begin
  Write('Press Enter');
  Readln;
  clrscr;
  x := -8;
  y := 0;
  while x <= 6 do
    if x <= 0 then
      writeln('x=', x = 0: 1, 'y= no defined')
    else
    begin
      if x <= -6 then
        y := (x / cos(x)) * (-x / cos(x));
      if x < 1 then
        y := (x * x * x) * x + cos(x) / ln(x) / ln(10);
      if x < 4 then
        y := cos(x) / (x * x * x)
      else
        y := cos(2 * x) * 68 + ln(x) / ln(10) / (x * x * x);
    end;
  writeln('x=', x = 0: 1, 'y=', y = 6: 3);
end.
Добавлено через 1 минуту
Уберите символ "="
writeln('x=', x=0:1,'y= no defined')
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
05.11.2022, 23:38  [ТС]
ФедосеевПавел,
Спасибо что помогаете такому чайнику как мне, буду исправлять, и как проверю код отпишусь
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
05.11.2022, 23:51
Вот подробнее о автоформаттере - воспользуйтесь им и преподаватель разомлеет от оформления
https://www.cyberforum.ru/post7676189.html

Добавлено через 10 минут
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Уберите символ "="
writeln('x=', x=0:1,'y= no defined')
Ошибся - не "уберите", а "замените на символ ':'"

Кроме того, в цикле не изменяется переменная x, т.е. условие завершения цикла никогда не выполнится.

Переменная x должна быть типа real, иначе невозможно выполнить задание - приращение аргумента на 0,1
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
05.11.2022, 23:58  [ТС]
ФедосеевПавел,
Опять проблема, как вы написали я убрала = в writeln('x=', x:0:1,'y= no defined')
но паскаль написал ошибку Error: illeqal use of ':', как это исправить?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
06.11.2022, 00:04
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Кроме того, в цикле не изменяется переменная x, т.е. условие завершения цикла никогда не выполнится.
Переменная x должна быть типа real, иначе невозможно выполнить задание - приращение аргумента на 0,1
Это
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
06.11.2022, 00:32
Цитата Сообщение от Lari76 Посмотреть сообщение
Вычислить значение функций на интервале [-8,6] с шагом 0.1
Pascal
1
2
3
4
5
6
7
8
var
  i: Integer;
  x, y: Real;
...
  for i:=-80 to 60 do begin
    x:=i/10;
    { ... }
  end;
Аналоги:
Pascal
1
2
3
4
5
6
i:=-80;
while i<=60 do begin
  x:=i/10;
  { ... }
  Inc(i);
end;
Pascal
1
2
3
4
5
i:=-80-1;
while i<60 do begin
  Inc(i); x:=i/10;
  { ... }
end;
Pascal
1
2
3
4
5
6
i:=-80;
repeat
  x:=i/10;
  { ... }
  Inc(i);
until i>60;
Pascal
1
2
3
4
5
i:=-80-1;
repeat
  Inc(i); x:=i/10;
  { ... }
until i=60;
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
06.11.2022, 01:09
Что касается вывода, имеет смысл его "свернуть":
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{$mode ObjFPC}
function f(x: Real): Real;
begin
  f:={...};
end;
 
const x0=-8; x1=6; xd=10; WS=4; W=7; D=3;
var i, j: Integer;
begin
  Write('x':5); for i:=0 to 9 do Write(i/10:W:1); WriteLn; WriteLn;
  for i:=x0 to x1-1 do begin
    Write(i:3,'':WS); for j:=0 to 9 do Write(f(i+j/xd):W:D); WriteLn;
  end;
  Write(x1:3,'':WS); WriteLn(f(x1):W:D);
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
06.11.2022, 01:51
В сухом остатке:
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
function f(x: Real): Real;
const NaN=0.0/0.0;
begin
  {x<-6} {x/Ln(x)*-x/Cos(x)}
  {x< 1} {Sqr(Sqr(x))+Cos(x)/Ln(x)*Ln(10)}
  if x<=0 then
    f:=NaN
  else if x<1 then
    f:=Sqr(Sqr(x))+Cos(x)/Ln(x)*Ln(10)
  else if x<4 then
    f:=Cos(x)/x/x/x
  else
    f:=Cos(2*x)*68+Ln(x)/Ln(10)/x/x/x;
end;
 
const x0=-8; x1=6; xd=10; W=7; D=2;
var i, j: Integer;
begin
  Write('x':5); for i:=0 to 9 do Write(i/10:W:1); WriteLn; WriteLn;
  for i:=x0 to x1-1 do begin
    Write(i/1:5:1,'':2); for j:=0 to 9 do Write(f(i+j/xd):W:D); WriteLn;
  end;
  Write(x1/1:5:1,'':2); WriteLn(f(x1):W:D);
end.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
06.11.2022, 18:11  [ТС]
bormant,
Я запуталась во всех этих кодах и ошибках которые мне выдает паскаль,
можете напечатать вес код по моей задачи как он должен выглядеть?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
06.11.2022, 18:22
Lari76, Вы же работаете, решение почти получилось. Давайте разберём ошибки крайнего Вашего варианта.
Публикуйте то, над чем сейчас работаете.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
06.11.2022, 19:29  [ТС]
ФедосеевПавел,
Работаю на этим кодом
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
program Firtlab;
uses crt,math;
var y:integer;
  x: real;
 begin
 Write('Press Enter');
 Readln;
 clrscr;
        x:=-8;
        y:=0;
        while x<=6 do
if x<=0 then
writeln('x=', x:0:1,'y= no defined')
else
 begin
 if x<=-6 then
 x:=(x/cos(x))*(-x/cos(x));
  if x<=1
  then x:=(x*x*x)*x+cos(x)/ln(x)/ln(10);
  if x<=4 then
    x:=cos(x)/(x*x*x)
 else
    x:=cos(2*x)*68+ln(x)/ln(10)/(x*x*x);
  end;
  writeln('x=',x:0:1,'y=',y:6:3);
  end.
проблема такая что программа пишет проблему (26,32) Illegal use of ':'
Я понимаю что ':' должны стоят и не знаю как исправить эту ошибку
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
06.11.2022, 22:14
Это потому, что Вы объявили x: integer, а не real.

Я говорил об этом, а потом ещё раз.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Кроме того, в цикле не изменяется переменная x, т.е. условие завершения цикла никогда не выполнится.
Переменная x должна быть типа real, иначе невозможно выполнить задание - приращение аргумента на 0,1
Также - настаиваю, чтобы вы скачали и применили автоформаттер исходного кода.
Из-за плохого форматирования не сразу видно, что writeln (строка 25) находится за пределами цикла.

Добавлено через 2 часа 28 минут
Беру Ваш крайний код
Только удалю из него ненужные модули и ожидание Enter при пуске.
Пропускаю через автоформаттер JCF
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
program Firtlab;
 
var
  y: integer;
  x: real;
begin
  x := -8;
  y := 0;
  while x <= 6 do
    if x <= 0 then
      writeln('x=', x: 0: 1, 'y= no defined')
    else
    begin
      if x <= -6 then
        x := (x / cos(x)) * (-x / cos(x));
      if x <= 1 then
        x := (x * x * x) * x + cos(x) / ln(x) / ln(10);
      if x <= 4 then
        x := cos(x) / (x * x * x)
      else
        x := cos(2 * x) * 68 + ln(x) / ln(10) / (x * x * x);
    end;
  writeln('x=', x: 0: 1, 'y=', y: 6: 3);
end.
И теперь можно пробовать исправлять и отлаживать.

1. Firtlab.pas(23,39) Error: Illegal use of ':'
тут всё просто, хоть я и говорил о переменной x, на самом деле ошибка из-за типа переменной y. Заменяем его на real и продолжаем.

2. при попытке пуска получаем зависание программы и постоянный вывод на экран (в консоль) текста x=-8.0y= no defined
тут тоже всё просто - видно, что цикл выполняется, текст выводится, но переменная x в нём не изменяется. Значит - нужно добавить в цикл изменение x. Кстати, в более ранних программах всё это было. Ну, да ладно... Кто старое помянет - тому глаз вон.
Исправляем - добавляем приращение x в цикл. Судя по всему, теперь цикл будет состоять из двух строк (из двух операторов) - сложный if и x:=x+0.1, а значит нужно вводить операторные скобки begin-end
Pascal
1
2
3
4
5
6
7
8
9
while ... do
begin
  if ...
  else ...
  begin
    ...
  end;
  x:=x+0.1;
end;
3. запускаем и видим какой-то странный результат - значение x, которое выводится на экран почему-то не возрастает линейно с шагом 0,1, а хаотично меняется в широком диапазоне. Значит в цикле где-то есть присвоение переменной x, хотя такого быть не должно. И, точно! В каждой строке вычисления функции результат присваивается не переменной y, а переменной x.
Исправляем и движемся дальше

4. Вывод появился, но только для отрицательных значений
прогонx=-8.0y= no defined
x=-7.9y= no defined
x=-7.8y= no defined
....................
x=-0.0y= no defined
x=6.1y=57.386

А где же вычисления для диапазона от 0 до +6?
А они есть, но нет вывода при этих вычислениях, т.к. плохое форматирование не позволило увидеть ошибку - writeln находится за пределами цикла. А вот увидеть это помог автоформаттер JCF.
Переносим writeln в тело цикла, а точнее в ветку else, которая содержит все вычисления с x, входящими в ОДЗ.

Запускаем - всё работает!!!!!!!!

Осталось лишь добавить порционный вывод по 20-25 строк и сдавать преподавателю.

И ещё - мне кажется, что Вы неправильно считаете функции и что-то удалили, не так расставили скобки. Это проверяйте самостоятельно.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
06.11.2022, 22:23  [ТС]
Я сделала как вы просили выше , скачала и использовала программку, он мне выдал следующие
Real type used. This type is obsolete and is seldom useful near REAL at line 10 col 6
Что вместо real мне тогда писать? я немного не поняла
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
06.11.2022, 22:30
Не обращайте внимание на это замечание, всё будет работать.

Смысл замечания - время движется и настоящий тип real уже не поддерживается, нужно использовать single или double, а сейчас вместо real используется double. Если это критично - нужно указать один из перечисленных типов.

Вам пока не нужно об этом задумываться - пишите real.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.11.2022, 00:05  [ТС]
ФедосеевПавел,
Я написала следующий код -
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
program Firtlab;
uses crt,math;
var x,y:real;
 k:integer;
 begin
        clrscr;
        x:=-8;
        k:=0;
        while x<=6 do
        begin
        if x<-6 then writeln ('x=', x:0:1,' y= No defined ')
        else if x<1 then
        begin
        y:=cos(x);
        writeln('x=',x:0:1,'y=',y:6:3)
        end
        else if x<4 then
        begin
        if x<=0 then
        writeln('x=',x:0:1,' y= No defined ')
        else begin
        if x<-6 then
        y:=(x/ln(x))*(-x/cos(x));
        if x<1 then
        begin
        y:=(x*x*x)*x+cos(x)/ln(x)/ln(10);
        else begin
        if x<4 then
        y:=cos(x)/(x*x*x)
        else;
        y:=cos(2*x)*68+ln(x)/sqr(3);
        writeln('x=',x:0:1,'y=',y:6:3);
        end
        end
        else
        begin
        y:=cos(2*x)*68+ln(x)/sqr(3);
        writeln('x=',x:0:1,' y= ',y:6:3)
        end;
        x:=x+0.1;
        inc(k);
        if k mod 20=0 then
        begin
        write('Press Enter');
        readln
        end;
        end;
        readln
        end.
Но на моменте
Pascal
1
2
3
y:=(x*x*x)*x+cos(x)/ln(x)/ln(10);
        else begin
        if x<4 then
JCF выдает ошибку
Exception TEParseError expected simple statement
Near ELSE at line 27 col 9
И паскаль также выдает syntax error ; expected but ELSE found
Как это можно исправить?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
07.11.2022, 00:16
Pascal
24
25
26
27
        if x<1 then
        begin
        y:=(x*x*x)*x+cos(x)/ln(x)/ln(10);
        else begin
Тут какой-то небаланс begin-end. Быстро не могу понять, что должно происходить здесь.

Добавлено через 3 минуты
Лучше пересоберите эту конструкцию из if заново, копируя только формулы.
Так будет быстрее.

Добавлено через 1 минуту
Вы будете сегодня до победы разбираться с кодом или отложите до завтра?
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.11.2022, 00:23  [ТС]
ФедосеевПавел
Отложу до завтра, уже поздно и я вас задерживаю, буду разбираться на свежую голову.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
07.11.2022, 00:42
До завтра.
0
0 / 0 / 0
Регистрация: 10.10.2022
Сообщений: 69
07.11.2022, 20:50  [ТС]
ФедосеевПавел,
Наконец исправила свой код (никакие ошибки паскаль и JCF) -
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
 
program Firtlab;
 
uses
  crt,
  Math;
 
var
  x, y: real;
  k:    integer;
begin
  clrscr;
  x := -8;
  k := 0;
  while x <= 6 do
  begin
    if x < -6 then
      writeln('x=', x: 0: 1, ' y= No defined ')
    else if x < 1 then
    begin
      y := cos(x);
      writeln('x=', x: 0: 1, 'y=', y: 6: 3);
    end
    else if x < 4 then
    begin
      if x <= 0 then
        writeln('x=', x: 0: 1, ' y= No defined ')
      else
      begin
        if x < -6 then
          y := (x / ln(x)) * (-x / cos(x));
        if x < 1 then
        begin
          y := (x * x * x) * x + cos(x) / ln(x) / ln(10);
        end
        else
        begin
          if x < 4 then
            y := cos(x) / (x * x * x)
          else;
          y := cos(2 * x) * 68 + ln(x) / sqr(3);
          writeln('x=', x: 0: 1, 'y=', y: 6: 3);
        end;
      end;
    end
    else
    begin
      y := cos(2 * x) * 68 + ln(x) / sqr(3);
      writeln('x=', x: 0: 1, ' y= ', y: 6: 3);
    end;
    x := x + 0.1;
    Inc(k);
    if k mod 20 = 0 then
    begin
      Write('Press Enter');
      readln;
    end;
  end;
  readln;
end.
Работает, но как я понимаю по полученному ответу, что то не так -
Кликните здесь для просмотра всего текста

x=-8.0 y= No defined
x=-7.9 y= No defined
x=-7.8 y= No defined
x=-7.7 y= No defined
x=-7.6 y= No defined
x=-7.5 y= No defined
x=-7.4 y= No defined
x=-7.3 y= No defined
x=-7.2 y= No defined
x=-7.1 y= No defined
x=-7.0 y= No defined
x=-6.9 y= No defined
x=-6.8 y= No defined
x=-6.7 y= No defined
x=-6.6 y= No defined
x=-6.5 y= No defined
x=-6.4 y= No defined
x=-6.3 y= No defined
x=-6.2 y= No defined
x=-6.1 y= No defined
Press Enter
x=-6.0 y= No defined
x=-5.9y= 0.927
x=-5.8y= 0.886
x=-5.7y= 0.835
x=-5.6y= 0.776
x=-5.5y= 0.709
x=-5.4y= 0.635
x=-5.3y= 0.554
x=-5.2y= 0.469
x=-5.1y= 0.378
x=-5.0y= 0.284
x=-4.9y= 0.187
x=-4.8y= 0.087
x=-4.7y=-0.012
x=-4.6y=-0.112
x=-4.5y=-0.211
x=-4.4y=-0.307
x=-4.3y=-0.401
x=-4.2y=-0.490
x=-4.1y=-0.575
Press Enter
x=-4.0y=-0.654
x=-3.9y=-0.726
x=-3.8y=-0.791
x=-3.7y=-0.848
x=-3.6y=-0.897
x=-3.5y=-0.936
x=-3.4y=-0.967
x=-3.3y=-0.987
x=-3.2y=-0.998
x=-3.1y=-0.999
x=-3.0y=-0.990
x=-2.9y=-0.971
x=-2.8y=-0.942
x=-2.7y=-0.904
x=-2.6y=-0.857
x=-2.5y=-0.801
x=-2.4y=-0.737
x=-2.3y=-0.666
x=-2.2y=-0.589
x=-2.1y=-0.505
Press Enter
x=-2.0y=-0.416
x=-1.9y=-0.323
x=-1.8y=-0.227
x=-1.7y=-0.129
x=-1.6y=-0.029
x=-1.5y= 0.071
x=-1.4y= 0.170
x=-1.3y= 0.267
x=-1.2y= 0.362
x=-1.1y= 0.454
x=-1.0y= 0.540
x=-0.9y= 0.622
x=-0.8y= 0.697
x=-0.7y= 0.765
x=-0.6y= 0.825
x=-0.5y= 0.878
x=-0.4y= 0.921
x=-0.3y= 0.955
x=-0.2y= 0.980
x=-0.1y= 0.995
Press Enter
x=-0.0y= 1.000
x=0.1y= 0.995
x=0.2y= 0.980
x=0.3y= 0.955
x=0.4y= 0.921
x=0.5y= 0.878
x=0.6y= 0.825
x=0.7y= 0.765
x=0.8y= 0.697
x=0.9y= 0.622
x=1.0y= 0.540
x=1.1y=-40.007
x=1.2y=-50.123
x=1.3y=-58.239
x=1.4y=-64.034
x=1.5y=-67.274
x=1.6y=-67.832
x=1.7y=-65.683
x=1.8y=-60.914
x=1.9y=-53.714
Press Enter
x=2.0y=-44.371
x=2.1y=-33.255
x=2.2y=-20.811
x=2.3y=-7.534
x=2.4y= 6.047
x=2.5y=19.391
x=2.6y=31.965
x=2.7y=43.269
x=2.8y=52.853
x=2.9y=60.334
x=3.0y=65.414
x=3.1y=67.891
x=3.2y=67.666
x=3.3y=64.748
x=3.4y=59.255
x=3.5y=51.405
x=3.6y=41.510
x=3.7y=29.967
x=3.8y=17.234
x=3.9y= 3.820
Press Enter
x=4.0y=-9.740
x=4.1 y= -22.906
x=4.2 y= -35.152
x=4.3 y= -45.991
x=4.4 y= -54.990
x=4.5 y= -61.790
x=4.6 y= -66.120
x=4.7 y= -67.807
x=4.8 y= -66.784
x=4.9 y= -63.092
x=5.0 y= -56.878
x=5.1 y= -48.389
x=5.2 y= -37.964
x=5.3 y= -26.018
x=5.4 y= -13.027
x=5.5 y= 0.490
x=5.6 y= 13.996
x=5.7 y= 26.951
x=5.8 y= 38.839
x=5.9 y= 49.187
Press Enter
x=6.0 y= 57.581
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8675 / 4512 / 1670
Регистрация: 01.02.2015
Сообщений: 13,949
Записей в блоге: 14
07.11.2022, 21:27
Да, не в том порядке проверяются условия.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//сначала проверим ОДЗ аргумента функции
if x<=0 then
  writeln('x=', x: 0: 1, ' y= No defined ')
else
begin
  //а вот здесь уже будем вычислять эту самую функцию
  //в четырёх диапазонах, не раздумывая об ошибках
  //при вычислениях, т.к. аргумент теперь строго в ОДЗ
  if ... then
    y:=...
  else if ... then
    y:=...
  else if ... then
    y:=...
  else
    y:=...;
  //и тут выводим значения - только в одном месте
  writeln('x=', x: 0: 1, ' y= ', y: 6: 3);
end;
А теперь самое время задуматься о порядке проверки диапазонов.
Предлагаю проверять с меньшего
Pascal
1
2
3
4
5
6
7
8
  if x<-6 then
    y:=...
  else if x<1 then
    y:=...
  else if x<4 then
    y:=...
  else
    y:=...;
Вроде логично.

Функции для диапазонов набирайте самостоятельно.
Но учтите, что cos(x) / ln(x) / ln(10) равносильно cos(x) / ( ln(x) * ln(10) ), а это далеко не то, что требуется. Расставляйте скобки для корректных вычислений.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2022, 21:27

Составить программу вычисления значения функций F(x)=cosa/sina
Составить программу вычисления значения функций F(x)=cosa/sina на отрезке в точках {X}_{i}=A+iH, где H=(B*A)/M A=пи/4 B=пи/2 M=15

Дополните программу на языке Паскаль для вычисления значения функций
Здравствуйте! Помогите, пожалуйста, решить задачу по информатике 8 класса для сына, т.к. я в этом вообще ничего не соображаю ( Дана...

Написать программу вычисления заданных функций. На экран вывести значения x, y, z в следующем виде:
Написать программу вычисления заданных функций. На экран вывести значения x, y, z в следующем виде: y=(sin x - cos x)/(x^2 +x+2) z=lg...

Составить программу вычисления N значений функций Y для X, изменяющегося от начального значения Х1 c шагом dx
Помогите пожалуйста решить

Составить программу вычисления N значений функций Y для X, изменяющегося от начального значения Х1 c шагом dx
помогите пожалуйста,заранее спасибо:)


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru