Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подчеркивает красным else, не могу понять почему.  (Прочитано 4411 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Tomoyo
Участник

ru
Offline Offline

« : 26-03-2010 21:07 » 

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x1,x2,L12,L21,g1,g2,p10,p20,y1,y2:real;
    T:integer;
begin
x1:=strtofloat(edit1.Text);
x2:=strtofloat(edit2.Text);
for T := 56 to 100 do
begin
L12:=(18.7/104)*exp(-(180.31/(1.987*T)));
L21:=(104/18.7)*exp(-(1722.1/(1.987*T)));
g1:=exp(-ln(x1+L12*x2)+x2*((L12/(x1+L12*x2))-(L21/(x2+L21*x1))));
g2:=exp(-ln(x2+L21*x1)-x1*((L12/(x1+L12*x2))-(L21/(x2+L21*x1))));
p10:=exp(34.61307+(-4873.446/T)-0.000000003249502*T-3.422*ln(T));
p20:=exp(30.79802+(-5966.069/T)+0.000000001030134*T-2.5*ln(T));
y1:=g1*(p10/760)*x1;
y2:=g2*(p20/760)*x2;
if y1+y2-1<=0.00001 then
edit4.Text:=floattostr(L12);
edit5.Text:=floattostr(L21);
edit6.Text:=floattostr(g1);
edit7.Text:=floattostr(g2);
edit8.Text:=floattostr(p10);
edit9.Text:=floattostr(p20);
edit10.Text:=floattostr(y1);
edit11.Text:=floattostr(y2);
edit12.Text:=floattostr(T)
else
T:=T+0.001;
end;


end.
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 26-03-2010 21:39 » 

Должно быть,
Код:
if y1+y2-1<=0.00001 then
  begin
    edit4.Text:=floattostr(L12);
    edit5.Text:=floattostr(L21);
    edit6.Text:=floattostr(g1);
    edit7.Text:=floattostr(g2);
    edit8.Text:=floattostr(p10);
    edit9.Text:=floattostr(p20);
    edit10.Text:=floattostr(y1);
    edit11.Text:=floattostr(y2);
    edit12.Text:=floattostr(T)
  end
else
  T:=T+0.001;
Иначе в блок if входит только первое выражение после then, а else появляется в коде просто так, ни к чему не относясь.

ЗЫ. Небольшой совет: форматируйте свой код. Его так будет легче читать, и будет понятнее, что происходит (в том числе, и что происходит не так).
Записан
Tomoyo
Участник

ru
Offline Offline

« Ответ #2 : 26-03-2010 22:09 » 

Спасибо Вам!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines