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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 21:28   #1
bloodeagle
 
Регистрация: 11.11.2009
Сообщений: 4
По умолчанию Почему выдаёт такой результат???

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,h,y,x:real;
begin
 a:=StrToFloat(Edit1.Text);
 b:=StrToFloat(Edit2.Text);
 h:=StrToFloat(Edit3.Text);
 c:=3;
 d:=5;
 x:=a;
 Memo1.Clear;
 Memo1.Lines[0]:='  x   |   y  ';
 Memo1.Lines.Add('------------');
 repeat
 if (x>0) then y:=d*ln(x*x)+2*c*sqrt(x)
 else y:=abs(d*x)+c*exp(2*x);
 Memo1.Lines.Add(FloatToStrf(x,fffixed,5,20)+' | '+FloatToStrf(y,fffixed,5,2));
 x:=x+h;
 until x>b;
end;
end.


Почему он при a=-2, b=1 и h=0.1 берёт не 0, а приблизительно 0??? И почему не выводит значение при х=1??? Что не так??? Помогите пожалуйста понять...
Изображения
Тип файла: jpg 1.JPG (79.7 Кб, 128 просмотров)

Последний раз редактировалось Stilet; 12.11.2009 в 09:04.
bloodeagle вне форума Ответить с цитированием
Старый 12.11.2009, 08:21   #2
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

Код:
repeat
if (x>0) then y:=d*ln(x*x)+2*c*sqrt(x)
else y:=abs(d*x)+c*exp(2*x);
Memo1.Lines.Add(FloatToStrf(x,fffix ed,5,20)+' | '+FloatToStrf(y,fffixed,5,2));
x:=x+h;
until x>=b;
а по поводу "приблизительно ноль" - любое целое число НИКОГДА не будет равно вещественному. если вам нужны точные числа - используйте округление
Код:
ROUNDTO(<вещественное число>,<порядок>)
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему эта строка дает правильный результат pavelstraut Общие вопросы C/C++ 5 27.07.2009 13:43
оч прошу посмотрите!! она работает, но ответ не такой выдаёт Neznakomka Помощь студентам 3 27.05.2009 22:27
проблемка с кодом, результат получается немного не такой как надо hen Помощь студентам 3 24.04.2009 15:11
Почему не выдает результат записи. Ну или бы хотя бы ошибку какую. Lorel PHP 2 01.12.2008 14:29
Почему ошибку выдаёт? Inbox Общие вопросы Delphi 14 24.06.2007 02:15