Автор Тема: помогите срочно решить задачу по информатике  (Прочитано 2191 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Shumaher

  • Старожил
  • ****
  • Сообщений: 387
  • Карма: -26
    • Просмотр профиля
помогите срочно решить задачу по информатике в PASCAL. задачу решил но выдает ошибку. не могу понять что неправильно. помогите если кто то сможет. буду премного благодарен. задание и решенная мною программа в прилагаемом файле


youctac

  • Гость
я вообще паскаль последний раз запускал лет шесть назад, так что могу ошибаться, но разве так можно указывать: -z ?

и вообще, разве можно выражение в константы записывать?
да и -z/x можно отдельной переменной задать, чтоб с минусами не заморачиваться

Оффлайн Shumaher

  • Старожил
  • ****
  • Сообщений: 387
  • Карма: -26
    • Просмотр профиля
попробовал задать через другую переменную но все равно в 9 строке выдает что неверная вещественная операция

Оффлайн Часовой

  • Постоялец
  • ***
  • Сообщений: 178
  • Карма: 7
    • Просмотр профиля
z*(-1) не пробывал?
Установка gsm сигнализаций

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
Вроде че-то типа того
Program ex;
const
     x=0.00671e5;
     y=-0.6023;
var
     a,b,c,d,z:real;
begin
     z:=sqrt(abs(2-pi));
     a:=ln(arctan(-z/x))/ln(10);
     b:=1/(a+z)+(x*y/100);
     c:=exp(ln(a)/3)+exp(b*ln(2));
     d:=sin(c)/cos(c);
     writeln(d);
end.

но ругается на
invalid floating-point operation. Недопустимая операция с плавающей запятой. При операции с двумя действительными значениями было получено переполнение или деление на ноль.

в 9 строчке
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
возможно получится заменить real на что-то более широкое... но у меня не компилится тогда.. проверьте у себя на компе
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Deathlesself

  • Старожил
  • ****
  • Сообщений: 817
  • Карма: 81
  • Пол: Мужской
  • Возьму в Тартар гнилую душу....
    • Просмотр профиля
возможно получится заменить real на что-то более широкое... но у меня не компилится тогда.. проверьте у себя на компе
Хех, логорифм отрицательного числа........ причем в 2-х местах....
Толстый клоун спляшет джигу на могилке дяди Тома....

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
если arctan(-z/x) дает отрицательное, то да... я прост оне проверял и не задумывался...
а второй где?
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Deathlesself

  • Старожил
  • ****
  • Сообщений: 817
  • Карма: 81
  • Пол: Мужской
  • Возьму в Тартар гнилую душу....
    • Просмотр профиля
если arctan(-z/x) дает отрицательное, то да... я прост оне проверял и не задумывался...
а второй где?
ну если учесть, что а у нас отрицательное, то
c:=exp(ln(a)/3)+exp(b*ln(2));


П.С. по условию там Arcsin  :derisive:
Толстый клоун спляшет джигу на могилке дяди Тома....

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
ну а у нас вообще получается посчитаться не может )
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
кстати да... я там уже кое-че правил согласно условию )
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
Program ex;
const
     x=0.00671e5;
     y=-0.6023;
var
     a,b,c,d,z:real;
function arcsin(x:real):real;
begin
     if abs(x)=1 then arcsin:=0
     else arcsin:=arctan(x/sqrt(1-sqr(x)))
end;

begin
     z:=sqrt(abs(2-pi));
     a:=ln(arcsin(-z/x))/ln(10);
     b:=1/(a+z)+(x*y/100);
     c:=exp(ln(a)/3)+exp(b*ln(2));
     d:=sin(c)/cos(c);
     writeln(d);
end.


так тоже ругается на плавающую точку )
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Deathlesself

  • Старожил
  • ****
  • Сообщений: 817
  • Карма: 81
  • Пол: Мужской
  • Возьму в Тартар гнилую душу....
    • Просмотр профиля
a в одном из 2-х случаев вычисляется, т.к. z из под корня можно с отрицательным знаком вынести, а вот дальше уже  :dntknw:
Толстый клоун спляшет джигу на могилке дяди Тома....

youctac

  • Гость
а если :

a:=ln(  здесь  arcsin(-z/x))/ln(10)

модуль воткнуть?

abs, чтоль?

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
ну условие то не такое ))
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

youctac

  • Гость
ну условие то не такое ))

ну арксинус может, конечно, равняться -1, но логарифм взять из -1 нельзя

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
ну вообщем если в двух местах поставить модуль, то будет пахать... но это не по условию...
2Shumaher короче скажи преподу, что задача говно )
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.