Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Внизоператор 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c