Не получается протабулировать функцию F на интервале Xstart до Xfinish с шагом dX
Мой код ниже(для варианта 21). Компилятор ругается. Не пойму что не так
main.p(22,44) Error: Incompatible types: got "Double" expected "ShortInt" main.p(23,17) Error: Incompatible types: got "Double" expected "ShortInt" main.p(24,7) Fatal: Syntax error, ";" expected but "identifier WRITE" found
var
xn, xk, dx, x, y, a, b, c: shortint;
begin
write('xn = ');
readln(xn);
write('xk = ');
readln(xk);
write('dx = ');
readln(dx);
write('a = ');
readln(a);
write('b = ');
readln(b);
write('c = ');
readln(c);
writeln('x');
x := xn;
while x < xk do
begin
if (x<0) or (b <> 0) then y := a*(x*x*x)+b
else if(x>0) and (b=0) then y:= (x-a)/(x-c)
else y:= x/c
write(x, ' ')
x := x + dx
end;
readln
end.
Ответы (1 шт):
Кристин, паскаль ругается что вы пытаетесь сравнивать и/или приравнивать shortint что целочисленное число -128..127 с числом с плавающей точкой Extended.
Если вы хотите результат с десятичными, то поменяйте тип y на двоичное число var y: Extended; если вам нужны чистые числа, то меняйте операцию деления с двоичной y := 4 / 2 на целостную y := 4 div 2, потому что оператор деления / уже автоматом начинает считать ваши числа как те - что имеют точку в наличии как пример 4.5
А ещё в вашем примере он очень сильно ругается, что вы забыли поставить semicolon а именно знак ; после окончания каждого выражения.
А ещё он сказал что вы три раза присвоили значение к y и после некогда его не использовали.
program Project1;
{$APPTYPE CONSOLE}
var
xn, xk, dx, x, a, b, c: shortint;
y: Extended;
begin
write('xn = ');
readln(xn);
write('xk = ');
readln(xk);
write('dx = ');
readln(dx);
write('a = ');
readln(a);
write('b = ');
readln(b);
write('c = ');
readln(c);
writeln('x');
x := xn;
while x < xk do
begin
if (x<0) or (b <> 0) then y := a*(x*x*x)+b // Тут y :=
else if(x>0) and (b=0) then y:= (x-a)/(x-c) // Тут y :=
else y:= x/c; // И тут y :=
write(x, ' ');
x := x + dx;
end;
// иииии что делать с Y ??????????
readln
end.
ps: Я к сожалению очень плохо владею русским языком, чтобы понять ваше задание в целом, но по программированию можете спокойно обращаться.
