Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

Помогите нубу   Найти похожие ветки 

 
Системщик ©   (2006-04-15 13:31) [0]

Что я сделал не так. Задача для первого класса. Больше мне обратиться не к кому кроме вас.. Ошибка при компиляции показывается в строке case a of. Пишут [Error] Unit2.pas(43): Ordinal type required

это сама программа

var p,f1,f2,f3,f4,G,a:real;
begin
p:=StrToFloat(Edit1.text);
if (p>=10.1) and (p<20) then a:=f1;
if (p>=20.3) and (p<30.2) then a:=f2;
if (p>=30.25) and (p<=40) then a:=f3;
if (p>40.5) and (p<=49) then a:=f4;
case a of
f1: G:=SQRT(1-SQR(p)+p);
f2: G:=exp(1/3*ln(SQR(p)-2.2));
f3: G:=ln(ABS(p-3))/ln(10);
f4: G:=0.2;
Edit2.text:=FloatToStr(G);
end;


 
User_OKA   (2006-04-15 13:36) [1]

Case не может работать с переменными типа real.


 
Системщик ©   (2006-04-15 13:39) [2]

ты хочешь сказать что с помощью case эту задачу решить нельзя?


 
User_OKA   (2006-04-15 13:45) [3]

почему нельзя, можно если a сделать Integer
а чем тебя if не устраивает


 
Галинка ©   (2006-04-15 13:45) [4]

А зачем обязательно реальные f1,f2,f3,f4,a, если они в вычислениях не участвуют?

И зачем case a of, если можно сразу функцию писать в then? А то получается, сначала сам присваеваешь. а потом перепроверяешь. Если только в задании не стоит использовать case...


 
nickmas   (2006-04-15 13:49) [5]

Оператор Case должен закрываться End-ом:

Case a of
...
end;


 
Системщик ©   (2006-04-15 13:51) [6]

дело в том, что задали задачу с использованием CASE. я  сижу вот голову ломаю...ниче не получается


 
User_OKA   (2006-04-15 13:54) [7]

именно эту задачу


 
Галинка ©   (2006-04-15 13:55) [8]

Тогда можно так:

var
p,G:real;
a:byte;

begin
p:=StrToFloat(Edit1.text);

if (p>=10.1) and (p<20) then a:=1;
if (p>=20.3) and (p<30.2) then a:=2;
if (p>=30.25) and (p<=40) then a:=3;
if (p>40.5) and (p<=49) then a:=4;

case a of
1: G:=SQRT(1-SQR(p)+p);
2: G:=exp(1/3*ln(SQR(p)-2.2));
3: G:=ln(ABS(p-3))/ln(10);
4: G:=0.2;
end;

Edit2.text:=FloatToStr(G);
end;


 
User_OKA   (2006-04-15 13:58) [9]

согласен


 
Системщик ©   (2006-04-15 14:02) [10]

Галинка, ты супер!


 
Kolan ©   (2006-04-15 14:09) [11]

Системщик ©   (15.04.06 14:02) [10]
Кстати сравнивая числа с плавающей запятой может дать "страннный" результат :)

http://xpoint.ru/know-how/Articles/FloatingPointNumbers


 
Галинка ©   (2006-04-15 14:13) [12]

Системщик, вот тут

1: G:=SQRT(1-SQR(p)+p);

будет ошибка, вычисление квадртного корня з отрицательного числа ((. Т.к. квадрат с минусом всегда больше самого числа с плюсом (в смысле по модулю)...


 
Системщик ©   (2006-04-15 14:15) [13]

to Kolan
это пока меня не касается, т.к. начал программмировать очень недавно


 
Kolan ©   (2006-04-15 14:16) [14]

Галинка ©   (15.04.06 14:13) [12]

всегда больше
p= 1

1: G:=SQRT(1-SQR(p)+p);
G := Sqrt(1-1+1) =Sqrt(1)? :)


 
Системщик ©   (2006-04-15 14:18) [15]

Галинка, точно будет ошибка. Я тогда сделаю 1: G:=SQRT(ABS(1-SQR(p)+p))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
15-1144171175
-=Z=-
2006-04-04 21:19
2006.04.30
Inter Base


15-1144412728
Boris Marchenko
2006-04-07 16:25
2006.04.30
И что мы тут собсна делаем? =)


10-1116670692
Igor Stepanov
2005-05-21 14:18
2006.04.30
Передача графика TDBChart в Excel


2-1144937250
ViktorZ
2006-04-13 18:07
2006.04.30
Почему не складывает как люди!!!


2-1144765707
Кашперук Иван
2006-04-11 18:28
2006.04.30
Вопрос про Меню





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