Помогите 0_о плизззззз !!!!!!!!

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
АЛИСА
Сообщения: 1
Зарегистрирован: 09 дек 2007, 19:49

09 дек 2007, 20:43

Нужно решить задачку
Разработать схему алгоритма и составить программу вычисления таблицы значений аргумента X и одного из параметров функции
Второй параметр принимает значение корня нелинейного уравнения.


bsinx
Y= ------------
a корень x+5 корень X

Аргумент XN,XK,DX;
Параметр :N значения A
Уравнение x квадрат ln(x+1,2)=0


Я вот тут сделала но не могу понять почему не правильно заранее спасибо..

Program P1 {Raschetno graficheskya};
type mc=array [1..99] of real;
a=array[1..99] of real;
var x:mc;y:ma;
b,xn,dn,xk,eps:real;
er,km,i,l,q:integer;
Function f1(x:mc;a:mc;l,q:integer):real;
Function f2(a,b,eps,fa,fcf,w,c:real;km,i:integer):real;
Function F(x:real):real;
begin
F:=x*x-ln(x+1.2)
end;
begin
fa:=F(a)
for i:=1 to km do
begin
c:=(a+b)/2; fc:=F(c); w:=abs(fc);
if w>eps then
if fa*fc>0 then a:=c
else b:=c
else
begin b:=c; exit end;
er:=1
end;
begin
if x>0 then
begn f1:=b*sinx[l]/(a[q]*sqrt(x[l]+5sqrt(x[l])))
end;
else er:=1
end;
Procedure proc1(a:mc;l;q:integer;y:ma;xn,xk,dx:real;er:byte);
begin q:=1; a[q]:=a[1];
while q<=N do
begin
l:=1;xn:=x[l];
while x[l]<xk do begin
y[q,l]:=f1(x,a)
end;
x[l]:=x[l-1]+dx;
l:=l+1;
end;
q:=q+1
end;
Procedure proc2(a:mc;N:integer;xn,xk,dx:real;er:byte;y:ma)
begin
if er:=1 then writeln ('Reshenia net')
else begin
for q:=1 to N do
for l:=1 to xk +N/dx do
writeln('x'y[q,l]:7:5);
end;
end;
begin
write('Vvedite znachenia xn;xk;dx;eps;km;a;b');
readln(xn;xk;dx;eps;km;a;b);
write('Vvedite znachenia N'); readln(N);
i:=1
repeat
write('Vvedite znachenia a[',i,']=');
readln(a);
until i>N
y[q,l]:=f1(x,a,q,l);
proc1(a,l,q,y,xn,xk,dx,er);
proc2(a,N,xn,xk,dx,er);
end.
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

10 дек 2007, 11:10

Задание, честно говорю, не понял. Может кто расшифровать?
По коду:
type mc=array [1..99] of real;
a=array[1..99] of real;
var x:mc;y:ma;
Зачем объявлять два абсолютно одинаковых типа, а потом еще делать объявление переменной с ошибкой? Не проще сразу написать: var x,y: array[1..99] of real; ?
Далее: зачем такой изврат: fa:=F(a), fc:=F(c); if fa*fc>0 then... . А почему нельзя if F(a)*F(c)>0 then... ?
begn f1:=b*sinx[l]/(a[q]*sqrt(x[l]+5sqrt(x[l]))) - на месте компилятора я бы на эту строку тоже ругался. Две лексические ошибки и одна грамматическая.

И вообще, объясните, что программа делает и что должна делать. У меня такое впечатление, что код можно сократить раза в три. С большим бонусом по части читабельности и понимабельности
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

11 дек 2007, 11:15

АЛИСА, при вставке кода для сохранения форматирования используйте тэги
[noparse]

Код: Выделить всё

 код вставляйте сюда 
или
[syntax='delphi'] код вставляйте сюда [/syntax] - с подсветкой синтаксиса
[/noparse]
Изображение
Ответить