• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Ошибка 207 в Турбо Паскале

  • Автор темы Автор темы Дим
  • Дата начала Дата начала

Дим

Ученик
Почётный участник
Регистрация
26 Окт 2014
Сообщения
3,179
Реакции
85
Баллы
0
Ошибка 207 в Турбо Паскале

Всех приветствую)
Буду краток) Суть:
1. надо написать программу вычисления выражения
2. написал
3. при выполнении постоянно вылетает с ошибкой "207 ...что-то с плавающей точкой"
Помогите Христа ради)
 

Вложения

  • Безымянный.webp
    Безымянный.webp
    30.6 KB · Просмотры: 368
  • Выражение.webp
    Выражение.webp
    5.4 KB · Просмотры: 80
Помогите Христа ради)
Попробую, только прежде дайте Вашу программу в текстовом виде, а не рисунком. Чтобы её скопипастить.
И да, формулировку задачи тоже покажите.
 
Ну не хотите - как хотите. Думал отладить программу, но набивать с Вашей картинки - увольте.
Ладно, чем могу.

1. Покажите в Вашей программе хоть одну функцию модуля CRT. Нету? Ну так и присобачивать его ни к чему.

2. Число Pi задавать не надо: это стандартная константа (формально - функция) Паскаля. Просто используйте, где надо, идентификатор "Pi" и оно подставится само, причем с высокой точностью.

Но это всё присказки (мелкие придирки) были, а вот теперь - сказка.

У Вас АБСОЛЮТНО неправильно определен арксинус и не совсем корректно арккосинус. Их лучше определить в виде функций, причем порознь, памятуя о том, что, во-первых, у них разные области изменения (арксинус меняется от -π/2 до +π/2, а арккосинус - от 0 до π), во-вторых, нужно задать значения в особых точках, а в-третьих - правильно записать формулу выражения этих функций через арктангенс. Я это делаю так:
Код:
function ArcSin(x:Real):Real;
begin
 if x=1 then ArcSin:=Pi/2 else
 if x=-1 then ArcSin:=-Pi/2 else
 ArcSin:=ArcTan(x/Sqrt(1-x*x));
end;

function ArcCos(x:Real):Real;
begin
 if x=1 then ArcCos:=0 else
 if x=-1 then ArcCos:=Pi else
 ArcCos:=(Pi/2)-ArcTan(x/Sqrt(1-x*x));
end;
Пока так.
 
Владимир, прошу прощения-я не не хочу, я просто отходил)
 

Вложения

Ага, спасибо.
Кстати, не заметил ClrScr, так что первое замечание снимается. Это команда CRT.
Теперь вопросы:
1. Где формулировка задания, т.е. сама формула для u? Хотелось бы взглянуть.
2. На каком этапе возникает ошибка? При трансляции? При запуске? После ввода x?
3. Какие значения переменной пытаетесь вводить?
 
вот задание. под номером 4. б)
Моя программа работает при вводимом Х в промежутке 0<X<1
 

Вложения

  • IMG_3832.webp
    IMG_3832.webp
    65.2 KB · Просмотры: 151
ARCOS как-то странно написано..))
 
Вдогон: вероятно, у нас некая нестыковка по офисам: я "выражения" не вижу.
AWRD.webp

Приложите в виде картинки, если не затруднит.
 
вот выражение
 

Вложения

  • Выражение.webp
    Выражение.webp
    5.4 KB · Просмотры: 153
вот задание. под номером 4. б)
Я тоже было так подумал, взглянув на картинку в первом посте, но потом увидел, что Вы в программе та-акого накрутили, что - ух!
Поэтому решил, что формула более сложная.
Ладно, сейчас посмотрю.
 
))
буду искренне благодарен.
я ведь не на халяву,а сам старался)
 
ARCOS-это описка? Может, функция кака-никака новая объявилась?))
 
Ну всё ясно.
Дело в том, что область определения арккосинуса - от -1 до +1, соответственно, поскольку аргументом арккосинуса является ln(x), х должен меняться в диапазоне от 1/е до е, т.е. от, примерно, 0.368 до 2.718. Значения, выходящие за пределы этого диапазона, НЕДОПУСТИМЫ. Отсюда и ругается.
Вот полностью отлаженная программа:
Код:
program mari_2;
uses crt;
var
 u,x,a,z,acos:real;
begin
 clrscr;
 Repeat
  write ('Vvedite chislo X > ');
  readln (x);
  if (x<1/exp(1)) or (x>exp(1)) then writeln('Oshibka! Povtorite vvod.');
 Until (x>=1/exp(1)) and (x<=exp(1));
 a:=3*x*Sqrt(x);
 z:=ln(x);
 if z=1 then acos:=0 else
 if z=-1 then acos:=Pi else
 acos:=(Pi/2)-ArcTan(z/Sqrt(1-z*z));
 u:=a*acos;
 writeln ('U= ', u:0:5);
 readln
end.
 
ARCOS-это описка? Может, функция кака-никака новая объявилась?))
Думаю, что описка. Это же методичка, а там ошибка на ошибке - дело абсолютно естественное. Неужели Вы полагаете, что та секретарша, которой поручили это набить, думает о том, что она делает?
 
Искренне благодарю.
А если сделать так, чтобы в случае неверного ввода Х программа принудительно присваивала ему крайнее допустимое значение? (это я сам сделаю).
А то простой пользователь ну откуда может знать такие границы?)
 
Или на начальном этапе просто указать:ВВОДИТЬ ОТ СИХ ДО СИХ?
Но тогда где универсальность?
Уж больно узкие границы...
 
А если сделать так, чтобы в случае неверного ввода Х программа принудительно присваивала ему крайнее допустимое значение?
Или на начальном этапе просто указать:ВВОДИТЬ ОТ СИХ ДО СИХ?
Ну это уж Вы сами. Резвитесь! Удачи.
Но тогда где универсальность? Уж больно узкие границы...
Ничего не поделаешь: уж такова функция. Кстати, этот диапазон шире, чем тот, что Вы хотели: от 0 до 1. Так что что Вас смущает?
 
Ещё раз благодарю.
Удачи!
 
Назад
Сверху