Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на while с шагом

Автор: Ericsson 12.04.2010 1:24

Было дано:

Код
      =x^3 + 2b               если х <= (-0.9)                        
y = (sqrt(x^3 + b))/c   если -0.9<x<1.3                                
      =ln(x^3+2)             если х>=1.3

b = 0.01*x + e^0.3        c = x+2.4

x принадлежит промежутку [-0.4;6.5]
шаг равен 1.6


Решить нужно было через вайл - написал -
program three;
uses crt;
var x,y,c,b:real;
begin
clrscr;
x:= -0.4;
while x<6.5 do
begin
if x <=(-0.9) then
b:=0.01*x + exp(0.3);
c:=x+2.4;
y:= exp(3*ln(x))+2*b else
if x>1.3 then y:=ln(exp(3*ln(x))+2) else
y:=(sqrt(exp(3*ln(x))+2))/c;
writeln (' b=',b:6:2,' c=',c:6:2,' y=',y:6:2);
x:=x+1.6;
end;
readkey;
end.

При запуске на строчке y:= exp(3*ln(x))+2*b else выдает ошибку на отсутствие ";"
Подскажите пжслта,где ошибся?

Автор: Client 12.04.2010 1:32

program three;
uses crt;
var
x, y, c, b : real;
begin
clrscr;
x:= -0.4;
while x<6.5 do
begin
if x <=(-0.9) then begin
b:=0.01*x + exp(0.3);
c:=x+2.4;
y:= exp(3*ln(x))+2*b
end
else
if x > 1.3 then y:=ln(exp(3*ln(x))+2)
else
y:=(sqrt(exp(3*ln(x))+2))/c;
writeln (' b=',b:6:2,' c=',c:6:2,' y=',y:6:2);
x:=x+1.6;
end;
readkey;
end.
Так компилится, но вылетает с 207 ошибкой

Автор: volvo 12.04.2010 2:40

Цитата
Так компилится, но вылетает с 207 ошибкой
Естественно.
program three;
uses crt;
var
x, y, c, b : real;
begin
clrscr;
x:= -0.4;
while x<6.5 do
begin
if x <=(-0.9) then begin
b:=0.01*x + exp(0.3);
c:=x+2.4;
y:= exp(3*ln(x))+2*b
end
else
if x > 1.3 then y:=ln(exp(3*ln(x))+2)
else begin
writeln(x:10 :5); { <--- Добавь эту строку и посмотри, почему вылетает }
y:=(sqrt(exp(3*ln(x))+2))/c;
end;
writeln (' b=',b:6:2,' c=',c:6:2,' y=',y:6:2);
x:=x+1.6;
end;
readkey;
end.
Посмотрел? Исправляй...

Автор: Ericsson 12.04.2010 21:04

Всем спасибо.
Исправил и сдал.