Теперь по второй задаче. Увы, при небольшом объеме программы ошибок в ней куча:
1. Вы вычисляете вещественную функцию вещественного аргумента - так почему же формат параметров x, y, dx Вы указываете целочисленный (integer)? Только real!
2. Действительно не определены начальное значение х и шаг. Это нужно сделать либо с консоли, либо введя эти величины в виде констант.
3. Абсолютно неправильно задан цикл. Во-первых, в Паскале отношение "больше или равно" и "меньше или равно" записывается так: сначала - неравенство, а потом равенство, т. е. ">=", "<=" - правильно, а вот "=>", "=<" - недопустимо. Во-вторых, поскольку мы наперед не знаем начального значения y, цикл "while ... do" не годится, следует использовать "repeat ... until". В-третьих, в любом случае неравенство по у записано неверно, смысл его в том, что цикл продолжается до тех пор, пока условие не станет истинным.
4. Неправильно записана сама функция. Там, как я понимаю, в знаменателе подкоренного выражения стоит х в кубе. Вашу же формулу транслятор интерпретирует так: (х+2)/х, результат умножить на х и результат опять умножить на х.
5. Нет вывода самих значений х и у.
Исходя из всего вышеизложенного, предлагаю такой вариант:
Код:
program d;
uses crt ;
var
k:integer;
y,x,dx: real;
begin
clrscr;
Write('Initial x value = ');
ReadLn(x);
Write('Step dx = ');
ReadLn(dx);
k:=0;
x:=x-dx;
Repeat
x:=x+dx;
y:=sqrt((x+2)/(x*x*x));
K:=K+1;
Writeln(k:2, x:7:1, y:7:2);
Until y<0.05;
ReadKey;
end.