Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с использованием оператора case
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zharatustra
Очень нужна ваша помощь. Программа заключается в том что z надо расчитать по формуле b^10(10-ab), если 0<ab<10 или по формуле 44a^12, если ab>10. В программе должен быть использован оператор case. Вот текст этой программы с использованием оператора if.
 
program n1;
uses crt;
var a,b,c,z: real;
begin
clrscr;
write ('A,B,C= ');
readln(a,b,c);
if (b=0) or (a=0) then
writeln ('Danniy vvedenie nekorrektno')
else
if (0<a*b) and (a*b<10) then
z:=(exp(10*ln(b)))*(10-a*b)
else
z:=44*(12*ln(a));
writeln (z:7:3,z);
readln
end.

мисс_граффити
если a и b - real, то сделать "в лоб" не получится. Только через округление...
Грубо говоря, вот так:
case trunc(a*b) of
0..10: z:={первое значение};
10..MaxInt: z:={второе значение};
else
writeln('error!');
end;
volvo
Юля, это тоже будет некорректно...

Оно даже не скомпилируется, но (даже если на это не обращать внимание, сделать 11 .. MaxInt) представь ситуацию когда
a = -0.1 и b = 0.2 ... По какой ветке пойдем?
мисс_граффити
 if (b=0) or (a=0) then 

никогда не сравнивай действительные числа через "="
тем более что в данной программе это вообще не нужно. тебе надо проверять, чтобы они были одного знака... либа оба больше 0, либо оба меньше.

Добавлено через 6 мин.
Отправила еще не видя прошлого сообщения. Про знаки написала...
Про 11 вместо 10 - упустила...
Компилируется (TP7).

можно так (целых 2 case поюзать!):
case ((a*b>0) and (a*b<10)) of
true: z:=1;
false: z:=2;
end;
Zharatustra
Спасибо, это именно то что мне надо!!!!!!!! Громадное спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.