Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2010, 21:02   #1
ZloyGeniy99
 
Регистрация: 10.02.2010
Сообщений: 4
По умолчанию ошибка # 205 в Паскале..

Помогите плиз нубу, не могу исправить ошибку # 205 возникает при вводе расчёте функции с значением x=0 и y=0.000001 с каких значений начинает выдовать ошибку не знаю... код приведён ниже...


Код:
var
F,x,y,h,b:real;
c,a:integer;
begin
writeln('программа табулирования функции F(x,y) ');
writeln('введите y'); {вывод на экран подсказки}
readln(y);{ввод с клавиатуры значения}
writeln('введите x');{вывод на экран подсказки}
readln(x);
writeln('задайте шаг аргумента');
readln(h);
writeln('задайте количество вычеслений');{вывод на экран подсказки}
readln(c);{ввод с клавиатуры значения}
a:=1;
writeln('          Таблица №1');
writeln(' Значения функции F(x,y) при y=', y:8:3);
writeln('___________________________');
writeln('|    x      |    F(x,y)   |');
writeln('|___________|_____________|');
for a:=1 to c do {начало цикла A}
begin
if (((sin(x)+cos(y))<=0)or(y=0) )then 
begin
writeln('|',x:8:3,'   |     нет     |');
writeln('|___________|_____________|');
x:=x+h;
end
else
begin
F:=(3*x-2*y+1)/(sqr((sin(x)+cos(y))*exp(x/y)));
writeln('|',x:8:3,'   | ',F:8:3,'    |');
writeln('|___________|_____________|');
x:=x+h;
end;
end;
readln
end.
From Stilet: На первый раз прощаю, но оформляй как сказал Namolem

Последний раз редактировалось Stilet; 11.02.2010 в 09:22.
ZloyGeniy99 вне форума Ответить с цитированием
Старый 10.02.2010, 21:12   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

1. Код оформляется кнопкой #
2. Мы должны помнить коды ошибки и их описания? напишите строчку и текст ошибки
Namolem вне форума Ответить с цитированием
Старый 10.02.2010, 21:15   #3
ZloyGeniy99
 
Регистрация: 10.02.2010
Сообщений: 4
По умолчанию

F:=(3*x-2*y+1)/(sqr((sin(x)+cos(y))*exp(x/y)));
#205: floating point overflow
ZloyGeniy99 вне форума Ответить с цитированием
Старый 10.02.2010, 21:32   #4
sting
Форумчанин
 
Аватар для sting
 
Регистрация: 03.07.2008
Сообщений: 114
По умолчанию

Google подсказал:

Цитата:
Переполнение операции с плавающей точкой.
Описание:

Операция с плавающей точкой вернула слишком большое число для Turbo Pascal (или для сопроцессора, если он есть).
Цитата:
Ошибка Floating point overflow - вещественное переполнение - возникает при выполнении операции над вещественными числами, когда результат операции слишком велик, или при попытке присвоить вещественной переменной слишком большое значение. Когда речь идет о вещественных числах, термин "слишком большое" следует понимать как большое по абсолютной величине - знак числа не имеет значения.
Меняй подход к решению!
Люди гибнут за МЕТАЛ!!!

Последний раз редактировалось sting; 10.02.2010 в 21:38.
sting вне форума Ответить с цитированием
Старый 10.02.2010, 21:39   #5
ZloyGeniy99
 
Регистрация: 10.02.2010
Сообщений: 4
По умолчанию

А это можно какнеть исправить??

та плин я ваще без понятия уже что можно сделать... мозг сплавился, скоро с ушей потечёт...

Последний раз редактировалось Stilet; 11.02.2010 в 09:22.
ZloyGeniy99 вне форума Ответить с цитированием
Старый 10.02.2010, 21:50   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

При каких значениях ошибка возникает? Наобум набрал несколько раз разные числа - ошибки не увидел...
Возможные варианты:
1) вернуть украденный сопроцессор, включив его поддержку в настройках компилятора, после чего использовать не real, а extended
2) вводить корректные данные (исследовать функцию на экстремумы)
eoln вне форума Ответить с цитированием
Старый 10.02.2010, 22:06   #7
sting
Форумчанин
 
Аватар для sting
 
Регистрация: 03.07.2008
Сообщений: 114
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
При каких значениях ошибка возникает? Наобум набрал несколько раз разные числа - ошибки не увидел...
Возможные варианты:
1) вернуть украденный сопроцессор, включив его поддержку в настройках компилятора, после чего использовать не real, а extended
2) вводить корректные данные (исследовать функцию на экстремумы)
Прально говорит!

У тебя Ф принимает большое число для реала!
либо у этой функции есть свои ограничений при вводимых данных, либы реал не то что надо!

Посмотри в математических справочниках какое значение может принимать Х и У при синусе и косинусе!

на сколько я помню косинус и синус изменяются от -1 до 1!
а вот аргументы функций не помню какие могут быть!

Я конечно не спец, но..
попробуй вынести Ф отдельно и задать для неё такой вещественный тип, как EXTENDED, ибо диапазон значений у этого типа чуть ли не 2 раза больше чем у РЕАЛА!
Люди гибнут за МЕТАЛ!!!

Последний раз редактировалось Stilet; 11.02.2010 в 09:23.
sting вне форума Ответить с цитированием
Старый 10.02.2010, 22:36   #8
ZloyGeniy99
 
Регистрация: 10.02.2010
Сообщений: 4
По умолчанию

при значении y=0.000001 и x=0 не пашет, пробовал поменять тип.. тож не пашет... синус при этих значениях равен 0, а косинус приближаеться к 1 с точки зрения алгебры, если нету у меня ошибки в вычеслениях то значение приближаеться к 1...

Последний раз редактировалось ZloyGeniy99; 10.02.2010 в 22:40.
ZloyGeniy99 вне форума Ответить с цитированием
Старый 10.02.2010, 22:51   #9
sting
Форумчанин
 
Аватар для sting
 
Регистрация: 03.07.2008
Сообщений: 114
По умолчанию

Попробуй решить это уравнение!
Найди точки максимума и минимума через производную!
если сам не сможешь в сети есть ресурсы которые находят производные с помощью МАТКАДА!
Просто перебором сложно будет тебе найти идеальные значения!
Но предел должен быть однозначно!
(хотя хз ... - но вроде да))
и проверь ещё раз - может ты в уравнении где то ошибся!

Я спать!
удачно тебе разобраться!
Люди гибнут за МЕТАЛ!!!
sting вне форума Ответить с цитированием
Старый 10.02.2010, 23:12   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Слишком маленькое значение y
exp(x/y) при значении y=0.000001 и x=0 это exp(0) = 1
exp(x/y) при значении y=0.000001 и x=h+0 при h = 0.1 это exp(100000) = что-то около 8,8e+43424, что превосходит паскалевский тип extended почти на 2 порядка
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка 207 в Паскале WWWTED Помощь студентам 1 21.12.2009 21:09
Ошибка 3 в паскале, посмотрите почему? Ольга1305 Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2009 04:14
помогите с кодом программы. в паскале вылетает ошибка. danilkin Помощь студентам 4 17.03.2009 15:39
маленькая програ на паскале,какая-то ошибка помогите кто знает:) Jeksik Помощь студентам 9 14.10.2008 14:03