Очень нужна ваша помощь. Программа заключается в том что 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.
мисс_граффити
27.09.2007 0:07
если a и b - real, то сделать "в лоб" не получится. Только через округление... Грубо говоря, вот так:
case trunc(a*b) of 0..10: z:={первое значение}; 10..MaxInt: z:={второе значение}; else writeln('error!'); end;
volvo
27.09.2007 0:17
Юля, это тоже будет некорректно...
Оно даже не скомпилируется, но (даже если на это не обращать внимание, сделать 11 .. MaxInt) представь ситуацию когда a = -0.1 и b = 0.2 ... По какой ветке пойдем?
мисс_граффити
27.09.2007 0:18
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
7.10.2007 20:58
Спасибо, это именно то что мне надо!!!!!!!! Громадное спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.