Форум: "Начинающим";
Текущий архив: 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