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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2012, 21:56   #1
leiprechain
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
Смущение Вещественной число NAN (Pascal)

Здравствуйте. Уважаемые программисты!
Помогите решить следующую проблему:
После многократного запуска данной программы
Код:
var v,x,y,f:extended;
n,i,z,integer;
koordinati:text;
begin
    assign(koordinati,'graphik.txt');
    rewrite(koordinati);
    randomize;
    write('Введите скорость частицы: ');
    readln(v);
    write('Введите количество толчков: ');
    readln(n);
    x:=0; y:=0;
    for i:=1 to n do
      begin
        f:=2*random*3.14;
        x:=x+v*cos(f);
        y:=y+v*sin(f);
        writeln(koordinati,x);
        writeln(koordinati, y);
        writeln('Абсцисса частицы: ',x);
        writeln('Ордината частицы: ',y);
      end;
    writeln('Для выхода из программы нажмите любую кнопку: ');
    readln;
    close(koordinati);
end.
x и y cтановится равным NAN. Пример во вложении.
Объясните, пожалуйста, как исправить.
Вложения
Тип файла: doc Doc3.doc (41.5 Кб, 19 просмотров)

Последний раз редактировалось leiprechain; 24.03.2012 в 21:58.
leiprechain вне форума Ответить с цитированием
Старый 24.03.2012, 22:01   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Какие значения задаете?
Базиля вне форума Ответить с цитированием
Старый 24.03.2012, 22:14   #3
leiprechain
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
Какие значения задаете?
По заданию, n= 100, 200, 300, 400, 500, 600, 700, 800, 800, 900. v любое (я задаю от 1 до 10).
leiprechain вне форума Ответить с цитированием
Старый 24.03.2012, 22:23   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Странно, задал я у себя эти исходные данные.
Ошибки как таковой не последовало.
Но все-таки, для справки, NAN говорит обычно о том, что при вычислениях (речь идет о вещ. типе) произошло (как пример) деление на нуль и т.п.
Базиля вне форума Ответить с цитированием
Старый 24.03.2012, 22:35   #5
leiprechain
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
Странно, задал я у себя эти исходные данные.
Ошибки как таковой не последовало.
Но все-таки, для справки, NAN говорит обычно о том, что при вычислениях (речь идет о вещ. типе) произошло (как пример) деление на нуль и т.п.
Сейчас проверил ещё раз. При v=1 и n= 900 ( к примеру) во время четвёртого запуска перед NAN получил одни нули. Может поэтому NAN выскакивает? Если да, то как убрать эти нули
leiprechain вне форума Ответить с цитированием
Старый 24.03.2012, 22:49   #6
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Может поэтому NAN выскакивает?
Я же уже пояснил почему выскакивает NaN и в каких случаях. Читаем внимательней
Смею предположить что у вас шалит рандом. В следствии чего, может возникнуть некорректный агрумент у функций sin и cos.
Базиля вне форума Ответить с цитированием
Старый 24.03.2012, 22:56   #7
leiprechain
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
Я же уже пояснил почему выскакивает NaN и в каких случаях. Читаем внимательней
Смею предположить что у вас шалит рандом. В следствии чего, может возникнуть некорректный агрумент у функций sin и cos.
Т.е с этим ничего ничего не сделаешь.
leiprechain вне форума Ответить с цитированием
Старый 24.03.2012, 23:07   #8
leiprechain
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
Смею предположить что у вас шалит рандом. В следствии чего, может возникнуть некорректный агрумент у функций sin и cos.
Не, дело не рандоме. Даже без него эти нули вылезают.
Здесь скорее всего что-то с синусом и косинусом.
leiprechain вне форума Ответить с цитированием
Старый 25.03.2012, 00:14   #9
leiprechain
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию

Народ помогите исправить!!!
leiprechain вне форума Ответить с цитированием
Старый 25.03.2012, 00:25   #10
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

если выскакивает не постоянно => проблема в рандоме => f может быть любым => может выходить за пределы допустимых значение => проверяем его, смотрим на наличие ошибки

попробуйте в код вставить:
Код:
f := random;
writeln('random = ', f);
f := 2 * f * 3.14;
и смотрите, что там за числа
GreenWizard вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отделение вещественной части Tony_Curtis Общие вопросы C/C++ 2 06.01.2015 15:25
Как осуществить дескрипторный вывод вещественной константы? ivan.tiran Общие вопросы C/C++ 1 07.03.2012 22:33
1) В массиве элемент с нечётным индексом переставить местами 2) по вещественной квадратной матрице построить вектор ЖунькООО Помощь студентам 1 10.10.2011 11:16
Выдаёт NAN DM_bite Помощь студентам 2 26.08.2008 20:52
NaN in Math Sibedir Общие вопросы Delphi 15 04.03.2008 06:58