Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

оператор case   Найти похожие ветки 

 
PIF   (2005-06-30 13:45) [0]

Здравствуйте! Скажите пожалуйста как правильно записать следующий код:
case volum of
0.025: error_V:=0.1;
0.05: error_V:=0.1;
0.1: error_V:=0.2;
0.2: error_V:=0.2;
0.25: error_V:=0.2;
0.5: error_V:=0.3;
1: error_V:=0.6;
else error_v:=0;
end;
Выдает ошибку:
[Error] Unit1.pas(569): Ordinal type required
[Error] Unit1.pas(570): Incompatible types: "Integer" and "Extended"


 
begin...end ©   (2005-06-30 13:48) [1]

Поскольку volum не является переменной порядкового типа, case надо заменить на if"ы.


 
begin...end ©   (2005-06-30 13:51) [2]

И ещё. Если volum -- это вещественное число (с плавающей запятой), то его (если оно не может быть представлено в виде конечной двоичной дроби) следует проверять на равенство вещественной константе с учётом возможной погрешности.


 
Просто Джо ©   (2005-06-30 13:51) [3]

Оператор case позволяет использовать только целочисленные и приводимые к ним значения. Придется переделать в if then else. Ну, это если "без извратов".


 
Digitman ©   (2005-06-30 13:52) [4]

case Round(volum * 1000) of
25: error_V:=0.1;
50: error_V:=0.1;
100: error_V:=0.2;
200: error_V:=0.2;
250: error_V:=0.2;
500: error_V:=0.3;
1000: error_V:=0.6;
else error_v:=0;
end;


 
ferr ©   (2005-06-30 13:52) [5]

function CaseDouble(const a:double;const d:array of double):integer;
var
 i:integer;
begin
 Result:=0;
 for i:=Low(d) to High(d) do
   if Abs(d[i]-a)<0.0000000001 then
   begin
     Result:=i+1;
     break;
   end;
end;

begin
 writeln(CaseDouble(2.5,[1,2.5,3]));
 readln;


 
dolmat   (2005-06-30 13:53) [6]

case round(volum*1000) of ьщжет и выход?


 
PIF   (2005-06-30 13:54) [7]

через if"ы очень громоздко получается, т.к. мне эту конструкцию в нескольких местах кода нужно применять, нельзя ли каким-нибудь другим способом


 
ferr ©   (2005-06-30 13:56) [8]

Для конкретного случая [4], иначе [5].


 
Kolan ©   (2005-06-30 14:04) [9]


> мне эту конструкцию в нескольких местах

Для этого есть функции.


 
ferr ©   (2005-06-30 14:04) [10]

case CaseDouble(vol,[0.025,0.05,0.1,0.2,0.25,0.5,0.1]) of
 1: error_V:=0.1;
 2: error_V:=0.1;
 3: error_V:=0.2;
 4: error_V:=0.2;
 5: error_V:=0.2;
 6: error_V:=0.3;
 7: error_V:=0.6;
 else error_v:=0;
 end;



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
3-1118322970
KorvinOE
2005-06-09 17:16
2005.07.18
Как в ClientDataSet использовать CommandText?


14-1119425225
nik90210
2005-06-22 11:27
2005.07.18
Не найдется ли доброго человека, который подарит мне песню?


3-1118139074
Ярослав
2005-06-07 14:11
2005.07.18
Предача списка в качестве параметра в ХП MS SQL


8-1111233565
seregka
2005-03-19 14:59
2005.07.18
jpg (gif, tiff)->ico


1-1119975946
heady
2005-06-28 20:25
2005.07.18
TPopupMenu изменить Caption