Главная страница
    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.038 c
3-1118072253
SC
2005-06-06 19:37
2005.07.18
Ниспадающее меню в DBGridEh


14-1119956998
Knight
2005-06-28 15:09
2005.07.18
Кто бесплатно отправлял факсы через инет?


6-1113203547
mc_s
2005-04-11 11:12
2005.07.18
нежно узнать IP Адрес.


4-1116874602
Salvator
2005-05-23 22:56
2005.07.18
Передача звука по сети


3-1118316867
saasik
2005-06-09 15:34
2005.07.18
DBGrid в рантайме скрывает поля. В дизайне все ОК.





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