Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.055 c
1-1120204747
kyn66
2005-07-01 11:59
2005.07.18
Как подставить путь к имени таблицы?


4-1116942710
Aleksandr.
2005-05-24 17:51
2005.07.18
Будет ли работать PostMessage из dll?


1-1120138665
CTAPbIi
2005-06-30 17:37
2005.07.18
Баг в DBGrid в MDI приложении


6-1113306725
zorik
2005-04-12 15:52
2005.07.18
cgi-приложение


1-1120128240
Cat
2005-06-30 14:44
2005.07.18
Динамический массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский