Главная страница
    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.46 MB
Время: 0.037 c
3-1118270900
Dron1173
2005-06-09 02:48
2005.07.18
Обработка ошибок при работе с базой данных.


14-1119949706
dreamse
2005-06-28 13:08
2005.07.18
Утилита для обновления программы через интернет


4-1116584355
aleshap
2005-05-20 14:19
2005.07.18
WIN <-> DOS


14-1119607278
boriskb
2005-06-24 14:01
2005.07.18
Экономим на зарплатах?


10-1096498814
Ivan K
2004-09-30 03:00
2005.07.18
Тупой вопрос. Как вытащить данные из xml?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский