Решить уравнение - Free Pascal (837)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте!) Помогите пожалуйста, очень нужна ваша помощь в решении задачи... Задача:" Решить уравнение ax2+bx+c=0 a - произведение вектора Т(к), b - произведение элементов целочисленного вектора D(L) с - произведение элементов целочисленного вектора R(n).". Я нашла на вашем форуме решение.. но преподаватель говорит оно не верное, и "как минимум странное") Помогите пожалуйста, буду очень благодарна..
Вот решение, на которое ругался преподаватель...
Листинг программы
  1. uses crt;
  2. function arcctg(x,e:real;var i:integer):real;{вычисление функции через разложение в ряд}
  3. var s,si,t:real;
  4. begin
  5. s:=0;
  6. t:=-x;{первый член ряда}
  7. si:=-x;
  8. i:=1;
  9. while abs(s-si)>e do
  10. begin
  11. s:=si;
  12. i:=i+1;
  13. {рекуррентное соотношение An=-A(n-1)/x^2}
  14. t:=-exp(ln(1))*(i+1)*exp(ln(x)*2*i+1);
  15. si:=si+t/(2*i+1);{член ряда= An/(2*i+1)}
  16. end;
  17. arcctg:=pi/2+s;{значение функции}
  18. end;
  19. procedure Shapka(xn,xk,dx,e:real);{рисование шапки}
  20. begin
  21. writeln(' Таблица табулирования функции arctg(x)');{заголовок}
  22. writeln('на интервале ',xn:0:2,' ',xk:0:2,' с шагом ',dx:0:2,' с точностью ',e:0:8);
  23. writeln('----------------------------');
  24. writeln('| x | arcctg(x) | Китр.|');
  25. writeln('----------------------------');
  26. end;
  27. var xn,xk,e,dx,f:real;
  28. i,k:integer;
  29. begin
  30. clrscr;
  31. repeat
  32. write('Введите конец интервала |xk|<=1 xk=');
  33. readln(xk);
  34. until xk<=1;
  35. repeat
  36. write('Начало интервала xn<',xk:0:2,' xn=');
  37. readln(xn);
  38. until xn<xk;
  39. repeat
  40. write('Введите точность в интервале (0,1) e=');
  41. readln(e);
  42. until(e>0)and(e<1);
  43. repeat
  44. write('Введите шаг табуляции, положительное число меньше ',xk-xn:0:2,' dx=');
  45. readln(dx);
  46. until (dx<xk-xn)and(dx>0);
  47. write('Press Enter...');
  48. readln;
  49. clrscr;
  50. Shapka(xn,xk,dx,e);
  51. k:=0;
  52. while xn<=xk do
  53. begin
  54. f:=arcctg(xn,e,i);
  55. writeln('|',xn:6:2,' |',f:10:6,' |',i:4,' |');
  56. k:=k+1;
  57. if k mod 18=0 then{если вывели 18 строк, делаем задержку. Если много значений, не войдет на экран}
  58. begin
  59. write('Press Enter...');
  60. readln;
  61. clrscr;
  62. Shapka(xn,xk,dx,e);
  63. end;
  64. xn:=xn+dx;
  65. end;
  66. writeln('----------------------------');
  67. write('Press Enter...');
  68. readln
  69. end.

Решение задачи: «Решить уравнение»

textual
Листинг программы
  1. uses crt;
  2. const max=5;
  3. type vec=array[1..max] of integer;
  4. procedure vector(var a:vec;n:byte;var p:integer;c:char);
  5. var i:byte;
  6. begin
  7. writeln('Вектор ',c);
  8. repeat
  9. write('Размер вектора от 1 до ',max,'=');
  10. readln(n);
  11. until n in [1..max];
  12. p:=1;
  13. for i:=1 to n do
  14.  begin
  15.   a[i]:=1+random(5);
  16.   write(a[i]:3);
  17.   p:=p*a[i];
  18.  end;
  19. writeln;
  20. writeln('Произведение=',p);
  21. end;
  22. var t,d,r:vec;
  23.     a,b,c,k,l,n:integer;
  24.     ds,x1,x2:real;
  25. begin
  26. clrscr;
  27. randomize;
  28. vector(t,k,a,'T');
  29. vector(d,l,b,'D');
  30. vector(r,n,c,'R');
  31. ds:=b*b-4*a*c;
  32. if ds<0 then writeln('Действительных корней нет!')
  33. else if ds=0 then
  34.    begin
  35.     x1:=-b/(2*a);
  36.     writeln('x1=x2=',x1:0:2);
  37.    end
  38. else
  39.   begin
  40.    x1:=(-b-sqrt(ds))/(2*a);
  41.    x2:=(-b+sqrt(ds))/(2*a);
  42.    writeln('x1=',x1:0:2,'   x2=',x2:0:2);
  43.   end;
  44. readln
  45. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы