2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Баг в Delphi 7
Сообщение20.04.2012, 22:27 


13/04/12
23
Здравствуйте! Написал программу и столкнулся с такой проблемой что в условии вывода при вводе с экрана считает все значение правильно кроме 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 
Аватара пользователя


27/02/12
3894
Maxim12 в сообщении #562286 писал(а):
1.1E-5 , 1.2E-5

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

 Профиль  
                  
 
 Re: Баг в Delphi 7
Сообщение21.04.2012, 12:58 


13/04/12
23
Да пробовал все равно не считает.

 Профиль  
                  
 
 Re: Баг в Delphi 7
Сообщение21.04.2012, 16:36 


01/07/08
836
Киев
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 


13/04/12
23
Спасибо большое, выручили!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group