Показать сообщение отдельно
Старый 22.12.2009, 22:10   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Это очень хорошо, что Вы сами пытаетесь написать программу. Желаю удачи. Несколько поправок, замечаний и рекомендаций.

1. Коль скоро Вы используете команды ClrScr и KeyPressed, Вы должны в начале создать указание присоединить модуль CRT. Без этого машина Вас не поймет. Т.е. самой первой должна идти строка
Uses CRT;

2. Функцию f(x,a) желательно оформить именно в виде функции, т.е. написать, например, так:
Function F(x,a:REAL):REAL;
VAR b:REAL;
BEGIN
b:=sqrt((1+a)/(1+x));
If x<0 then
F:=(sqr(a)+sqr(b))*x/sqrt(abs(1+a)) else
If x=0 then
F:=sqr(sqr(a)+sqr(b)) else
If (x>0) and (x<1) then
F:=ln(y)/(sqr(a)+sqr(b)) else
F:=sqrt(x*(sqr(a)+sqr(b));
END;
Теперь в теле программы, где нужно, достаточно написать y:=F(x,a);

3. Думаю, что исходные данные лучше ввести сразу явно, чем заморачиваться каждый раз с вводом с клавиатуры. Почему бы вместо всех этих 'Vvedite' не написать просто:
x0:=-0.5;
xn:=2.5;
и т.д. А b и вовсе вводить не надо, его программа должна сама вычислять.

4. Если Вы хотите сделать на экране отступ в несколько строк, то совсем не нужно повторять многократно writeln(''); Лучше организуйте цикл. Например, чтобы отступить на 15 строк, достаточно написать:
for i:=1 to 15 do writeln;
Пустой параметр ('') указывать не обязательно.

5. Оператор repeat ... until (в отличие от while ... do) не требует внутри себя общих операторных скобок begin ... end. Всё, что находится между repeat и until, составляет тело цикла.

6. Попробуйте для начала обойтись без псевдографики - просто добейтесь того, чтобы выводимые на экран числа выстроились в ряды и колонки. Псевдографику потом добавить можно.

Успехов!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070