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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2014, 15:28   #1
yulia.a
Пользователь
 
Регистрация: 08.03.2014
Сообщений: 21
По умолчанию Ошибка в программе

Написала программу(пример прикреплен ниже), все запускается, все вроде работает, но при просчете значений вручную второе выражение не сходится и плюс непонятно, почему у значения х вместо нуля стоит дробное число(скрин ниже).Объясните, пожалуйста, что не так?

Код:
Program LAB;
  Var
    A,B,hx,x,x0,xn,z:real;
    i,nx:integer;
  Begin 
    A:=-5;
    B:=12;
    x0:=-2;
    hx:=0.2;
    xn:=2;
    x:=x0;
    nx:=trunс((xn-x0)/hx+1e-6)+1;
    For i:=1 to nx do
      begin
        if x<=pi/2
          then
            z:=2*sin(x)
          else 
            if (-pi/2<x) and (x<pi/2)
              then
                z:=A*sin(x)+B
              else
                z:=cos(x);
        writeln(‘x=’,x,’z=’,z);
        x:=x+hx
      end
  End.
Изображения
Тип файла: jpg пример.JPG (7.0 Кб, 134 просмотров)
Тип файла: jpg скрин_программы.JPG (53.7 Кб, 98 просмотров)
yulia.a вне форума Ответить с цитированием
Старый 13.04.2014, 16:02   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ответы сходятся, т.к. синус в паскале считается в радианах, а не градусах.
Почему не ноль? Ноль там, то есть почти ноль 0,000000000002, это особенность дробных чисел (см. инет или поиск по форуму). Чтоб такого не было, например, пиши writeln(‘x=’,x:0:5,’z=’,z:0:5);
с транкейтами что-то замудрёно. Используй не for, а while или repeat

Последний раз редактировалось eoln; 13.04.2014 в 16:07.
eoln вне форума Ответить с цитированием
Старый 13.04.2014, 17:32   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Там вроде в самой задаче опечатка.
Первая строка должно быть <= - пи/2, а не <= пи/2.
Иначе условие пересекается с условием второй строки.
type_Oleg вне форума Ответить с цитированием
Старый 15.04.2014, 19:08   #4
yulia.a
Пользователь
 
Регистрация: 08.03.2014
Сообщений: 21
По умолчанию

Спасибо большое!
По заданию нужно именно for.
Наверное, там и есть ошибка в первом условии
yulia.a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в программе charger Visual C++ 1 14.06.2011 00:20
Ошибка в программе. v1le Общие вопросы C/C++ 4 04.12.2010 21:17
Ошибка в программе LuBuMaster Visual C++ 5 07.10.2010 17:19
Ошибка в программе misher Общие вопросы Delphi 12 01.09.2010 19:11
Ошибка в программе Vladislav514 Софт 0 13.07.2010 15:16