2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Баг в Delphi 7
Сообщение20.04.2012, 22:27 
Здравствуйте! Написал программу и столкнулся с такой проблемой что в условии вывода при вводе с экрана считает все значение правильно кроме 1E-5 , 2E-5 , 3E-5 и так далее. Соответственно значения скажем 1.1E-5 , 1.2E-5 он считает и выводит в консоль а при тех значениях которые написал я не выводит ничего.
Вот собсивенно сам код
Код:
[code]program lab61;

{$APPTYPE CONSOLE}

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

const
  m=3000;
  n=100;

var
  i,j,flag:integer;
  d,l,dt,dh,t,q,h,ro,k,c,R,a:real;
  TT:array [0..m,0..n] of real;
  RF1:TextFile;
  RF2:TextFile;
begin
  {AssignFile(RF1, 'C:\lab6.txt');
  AssignFile(RF2, 'C:\lab6_dig.txt');
  ReWrite(RF1);
  ReWrite(RF2);}
  ro:= 6000;
  k:=31;
  c:=514;
  R:=0.55;
  h:=(1E-4);
  q:=2.71E+11;
  a:=k/(c*ro);

  dt:=(1E-4)/m;   //шаг по температуре
  dh:=((h)/(n));   //шаг по глубине
   h:=0;
  i:=0;
  j:=0;
  for i:=0 to m do
  begin
  for j:=0 to n do
  begin

  TT[i][j]:=20;
  end;
  end;


  for i:=1 to m do
  begin
  l:=i;
  t:=t+dt;
  TT[i][0]:= (2*q*(1-R)*sqrt(a*t))/(k*sqrt(3.14)) + 20;
  for j:=1 to n-1 do
  begin
  l:=j;
  TT[i][j]:=((a*dt)/(dh*dh));
  TT[i][j]:=TT[i][j]*(TT[i-1][j+1]-(2*TT[i-1][j])+TT[i-1][j-1]);
  TT[i][j]:=TT[i][j]+TT[i-1][j];

  end;
// Writeln(i);
  end;
  h:=0;
  for j:=0 to n-1 do
  begin
  write(h); write('______');
  writeln(TT[m][j]);
  h:=dh*(j+1);
  end;
  h:=0;
  for i:=0 to 1000 do
  begin
  writeln('vvedite glubinu');
  h:=0;
  readln(l);
   for j:=0 to n do
    begin
    h:=dh*(j);
    if (l=h) then
      begin
        writeln(TT[m][j]);
      end;
    end;
  end;
//========================================================печать массива
writeln('OlLLOLlol');
  for j:=0 to n-1 do
  begin
  l:=j;
   write(j); write('   '); writeln(TT[m][j]);
  end;
{ flag:=3;
  while (flag>0) do
  begin
  writeln('Continue?');
  readln(flag);
  writeln('GLUBINA');
  readln(j);
  end;}

readln;
//readln;
//CloseFile(RF1);
end.[/code]

Подскажите пожалуйста в чем проблема собственно.

 
 
 
 Re: Баг в Delphi 7
Сообщение21.04.2012, 07:58 
Аватара пользователя
Maxim12 в сообщении #562286 писал(а):
1.1E-5 , 1.2E-5

Пробовали 1.0E-5 , 2.0E-5... ?

 
 
 
 Re: Баг в Delphi 7
Сообщение21.04.2012, 12:58 
Да пробовал все равно не считает.

 
 
 
 Re: Баг в Delphi 7
Сообщение21.04.2012, 16:36 
Maxim12 в сообщении #562286 писал(а):
Соответственно значения скажем 1.1E-5 , 1.2E-5 он считает и выводит в консоль а при тех значениях которые написал я не выводит ничего.

Здесь удивительно, что
Цитата:
1.1E-5 , 1.2E-5 он считает
:-) .
Сравнивать вещественные переменные нужно как то так
Код:
abs(l-h)<1e-15
. С уважением,

 
 
 
 Re: Баг в Delphi 7
Сообщение23.04.2012, 11:17 
Спасибо большое, выручили!

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group