Главная страница
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.053 c
6-1113390100
atruhin
2005-04-13 15:01
2005.07.18
Зачем вызывается WSAStartup при каждом создании сокета.


14-1119723874
Иксик
2005-06-25 22:24
2005.07.18
Как легче всего доехать из Москвы в Питер?


1-1119782265
Lamer blin
2005-06-26 14:37
2005.07.18
Word Aplication


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


14-1119601302
Ломброзо
2005-06-24 12:21
2005.07.18
Flash - ссылкой?