Решить уравнение - Free Pascal (837)
Формулировка задачи:
Здравствуйте!) Помогите пожалуйста, очень нужна ваша помощь в решении задачи... Задача:" Решить уравнение ax2+bx+c=0 a - произведение вектора Т(к), b - произведение элементов целочисленного вектора D(L) с - произведение элементов целочисленного вектора R(n).". Я нашла на вашем форуме решение.. но преподаватель говорит оно не верное, и "как минимум странное") Помогите пожалуйста, буду очень благодарна..
Вот решение, на которое ругался преподаватель...
Листинг программы
- uses crt;
- function arcctg(x,e:real;var i:integer):real;{вычисление функции через разложение в ряд}
- var s,si,t:real;
- begin
- s:=0;
- t:=-x;{первый член ряда}
- si:=-x;
- i:=1;
- while abs(s-si)>e do
- begin
- s:=si;
- i:=i+1;
- {рекуррентное соотношение An=-A(n-1)/x^2}
- t:=-exp(ln(1))*(i+1)*exp(ln(x)*2*i+1);
- si:=si+t/(2*i+1);{член ряда= An/(2*i+1)}
- end;
- arcctg:=pi/2+s;{значение функции}
- end;
- procedure Shapka(xn,xk,dx,e:real);{рисование шапки}
- begin
- writeln(' Таблица табулирования функции arctg(x)');{заголовок}
- writeln('на интервале ',xn:0:2,' ',xk:0:2,' с шагом ',dx:0:2,' с точностью ',e:0:8);
- writeln('----------------------------');
- writeln('| x | arcctg(x) | Китр.|');
- writeln('----------------------------');
- end;
- var xn,xk,e,dx,f:real;
- i,k:integer;
- begin
- clrscr;
- repeat
- write('Введите конец интервала |xk|<=1 xk=');
- readln(xk);
- until xk<=1;
- repeat
- write('Начало интервала xn<',xk:0:2,' xn=');
- readln(xn);
- until xn<xk;
- repeat
- write('Введите точность в интервале (0,1) e=');
- readln(e);
- until(e>0)and(e<1);
- repeat
- write('Введите шаг табуляции, положительное число меньше ',xk-xn:0:2,' dx=');
- readln(dx);
- until (dx<xk-xn)and(dx>0);
- write('Press Enter...');
- readln;
- clrscr;
- Shapka(xn,xk,dx,e);
- k:=0;
- while xn<=xk do
- begin
- f:=arcctg(xn,e,i);
- writeln('|',xn:6:2,' |',f:10:6,' |',i:4,' |');
- k:=k+1;
- if k mod 18=0 then{если вывели 18 строк, делаем задержку. Если много значений, не войдет на экран}
- begin
- write('Press Enter...');
- readln;
- clrscr;
- Shapka(xn,xk,dx,e);
- end;
- xn:=xn+dx;
- end;
- writeln('----------------------------');
- write('Press Enter...');
- readln
- end.
Решение задачи: «Решить уравнение»
textual
Листинг программы
- uses crt;
- const max=5;
- type vec=array[1..max] of integer;
- procedure vector(var a:vec;n:byte;var p:integer;c:char);
- var i:byte;
- begin
- writeln('Вектор ',c);
- repeat
- write('Размер вектора от 1 до ',max,'=');
- readln(n);
- until n in [1..max];
- p:=1;
- for i:=1 to n do
- begin
- a[i]:=1+random(5);
- write(a[i]:3);
- p:=p*a[i];
- end;
- writeln;
- writeln('Произведение=',p);
- end;
- var t,d,r:vec;
- a,b,c,k,l,n:integer;
- ds,x1,x2:real;
- begin
- clrscr;
- randomize;
- vector(t,k,a,'T');
- vector(d,l,b,'D');
- vector(r,n,c,'R');
- ds:=b*b-4*a*c;
- if ds<0 then writeln('Действительных корней нет!')
- else if ds=0 then
- begin
- x1:=-b/(2*a);
- writeln('x1=x2=',x1:0:2);
- end
- else
- begin
- x1:=(-b-sqrt(ds))/(2*a);
- x2:=(-b+sqrt(ds))/(2*a);
- writeln('x1=',x1:0:2,' x2=',x2:0:2);
- end;
- readln
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д