Главная страница
    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.009 c
15-1144404237
BlackLumer
2006-04-07 14:03
2006.04.30
Где взять то благодаря чему


15-1144504394
OSokin
2006-04-08 17:53
2006.04.30
Кто любит игру "Корсары"?


2-1144905410
Student iz KZ
2006-04-13 09:16
2006.04.30
Как производть локализацию приложения с помощью...


15-1144740684
Der Nechk@ssoff
2006-04-11 11:31
2006.04.30
Собсна-вирусы


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