Построение графиков функций (перевести в PascalABC) - Pascal ABC

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

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

программа была набрана в турбо паскале, помогите перевести его в PascalABC
Листинг программы
  1. program chukreev;
  2. uses graph,crt;
  3. var y:array[1..101] of real;nom:integer;
  4. i,k,l,n,mx,dr,mo:integer; a,b,x,h,ymax,ymin,my: real;
  5. xs: string [5]; Yx:string[20];
  6. begin
  7. clrscr;
  8. writeln(' Виды функций');
  9. writeln('1: y:=sqr(x)-x+1');writeln('2: y:=sin(x)/cos(x)');
  10. writeln('3: y:=cos(x)');writeln('4: y:=sqrt(x)');
  11. writeln('5: y:=3*x+1');writeln('6: y:=-x/2'); writeln('7: y:=exp(3*ln(x))');
  12. writeln('8: y:=1/x'); writeln('9: y:=sqr(x)');
  13. write('введите номер:');readln(nom);
  14. write('введите начальное значение x='); readln(a);
  15. write('введите конечное значение x='); readln(b);
  16. write('введите число точек ='); readln(n);
  17. ymax:=-maxint;ymin:=maxint; h:=(b-a)/n;
  18. readln;
  19. x:=a;
  20. for i:=1 to n do
  21. begin
  22. Case nom of
  23. {1: y[i]:=sqr(x)-x+1;
  24. {2: y[i]:=sin(x)/cos(x);}
  25. {3: y[i]:=cos(x);
  26. {4: y[i]:=sqrt(x);}
  27. {5: y[i]:=3*x+1;
  28. {6: y[i]:=-x/2;
  29. {7: y[i]:=exp(3*ln(x));}
  30. 8: y[i]:=1/x;
  31. 9: y[i]:=sqr(x);
  32. end;
  33. if y[i]>ymax then ymax:=y[i];
  34. if y[i]<ymin then ymin:=y[i];
  35. x:=x+h; end;
  36. dr:=detect; initgraph(dr,mo,'c:\tp7\bgi');
  37. mx:=round((getmaxx-50)/n);
  38. my:=(ymax-ymin)/(getmaxy-20);
  39. k:=round(abs(ymin)/my);
  40. line(20,20,20,getmaxy-20);
  41. outtextxy(18,20,'^'); outtextxy(10,10,'y');
  42. line(20,getmaxy-20-k,getmaxx-20,getmaxy-20-k);
  43. outtextxy(getmaxx-20,getmaxy-22-k,'>');
  44. outtextxy(getmaxx-20,getmaxy-15-k,'x');
  45. Case nom of
  46. 1: Yx:='sqr(x)-x+1';
  47. 2: Yx:='sin(x)/cos(x)';
  48. 3: Yx:='cos(x)';
  49. 4: Yx:='sqrt(x)';
  50. 5: Yx:='3*x+1';
  51. 6: Yx:='-x/2';
  52. 7: Yx:='exp(3*ln(x))';
  53. 8: Yx:='1/x';
  54. 9: Yx:='sqr(x)';
  55. end;
  56. outtextxy(getmaxx-100,getmaxy-10,Yx); X:=A;
  57. {outtextxy(getmaxx-100,getmaxy-10,'y=x^2-X+1'); X:=A;}
  58. for i:=1 to n do
  59. begin
  60. str(x,xs); l:=round((y[i]-ymin)/my);
  61. if(i-1) mod 5=0 then outtextxy((i-1)*mx+20,getmaxy-15-k,xs);
  62. outtextxy((i-1)*mx+20,getmaxy-20-l,'*');x:=x+h
  63. end;
  64. repeat until keypressed; closegraph
  65. end.

Решение задачи: «Построение графиков функций (перевести в PascalABC)»

textual
Листинг программы
  1. program chukreev;
  2. uses graphABC,crt;
  3. var y:array[1..101] of real;
  4.     nom:integer;
  5.     i,k,l,n,mx,dr,mo:integer;
  6.     a,b,x,h,ymax,ymin,my: real;
  7.     xs,Yx:string;
  8. begin
  9. hidecursor;
  10. writeln('                                   Виды функций');
  11. writeln('1: y:=sqr(x)-x+1');writeln('2: y:=sin(x)/cos(x)');
  12. writeln('3: y:=cos(x)');writeln('4: y:=sqrt(x)');
  13. writeln('5: y:=3*x+1');writeln('6: y:=-x/2'); writeln('7: y:=exp(3*ln(x))');
  14. writeln('8: y:=1/x'); writeln('9: y:=sqr(x)');
  15. write('введите номер:');readln(nom);
  16. write('введите начальное значение x='); readln(a);
  17. write('введите конечное значение x=');  readln(b);
  18. write('введите число точек =');         readln(n);
  19. ymax:=-maxint;
  20. ymin:=maxint;
  21. h:=(b-a)/n;
  22. readln;
  23. clearwindow;
  24. x:=a;
  25. for i:=1 to n do
  26.  begin
  27.   Case nom of
  28. {1: y[i]:=sqr(x)-x+1;
  29. {2: y[i]:=sin(x)/cos(x);}
  30. {3: y[i]:=cos(x);
  31. {4: y[i]:=sqrt(x);}
  32. {5: y[i]:=3*x+1;
  33. {6: y[i]:=-x/2;
  34. {7: y[i]:=exp(3*ln(x));}
  35. 8: y[i]:=1/x;
  36. 9: y[i]:=sqr(x);
  37.  end;
  38. if y[i]>ymax then ymax:=y[i];
  39. if y[i]<ymin then ymin:=y[i];
  40. x:=x+h;
  41.  end;
  42.  
  43. mx:=round((windowwidth-50)/n);
  44. my:=(ymax-ymin)/(windowheight-20);
  45. k:=round(abs(ymin)/my);
  46. line(20,20,20,windowheight-20);
  47. textout(18,20,'^');
  48. textout(10,10,'y');
  49. line(20,windowheight-20-k,windowwidth-20,windowheight-20-k);
  50. textout(windowwidth-20,windowheight-22-k,'>');
  51. textout(windowwidth-20,windowheight-15-k,'x');
  52. Case nom of
  53. 1: Yx:='sqr(x)-x+1';
  54. 2: Yx:='sin(x)/cos(x)';
  55. 3: Yx:='cos(x)';
  56. 4: Yx:='sqrt(x)';
  57. 5: Yx:='3*x+1';
  58. 6: Yx:='-x/2';
  59. 7: Yx:='exp(3*ln(x))';
  60. 8: Yx:='1/x';
  61. 9: Yx:='sqr(x)';
  62. end;
  63. textout(windowwidth-100,windowheight-10,Yx);
  64. X:=A;
  65. for i:=1 to n do
  66. begin
  67. str(x,xs); l:=round((y[i]-ymin)/my);
  68. if(i-1) mod 5=0 then textout((i-1)*mx+20,windowheight-15-k,xs);
  69. textout((i-1)*mx+20,windowheight-20-l,'*');
  70. x:=x+h
  71. end;
  72. end.

Объяснение кода листинга программы

Этот код написан на языке Pascal ABC и используется для построения графиков функций. Он использует библиотеку graphABC и функцию crt для отображения графиков. Переменные:

  • y: массив из 101 элемента, представляющий значения функции на интервале от x=0 до x=100.
  • nom: номер функции, которую нужно отобразить.
  • i, k, l, n, mx, dr, mo: счетчики для итерации по точкам функции.
  • a, b: начальные и конечные значения переменной x.
  • ymax, ymin: минимальное и максимальное значения функции.
  • my: шаг оси y.
  • mx: шаг оси x.
  • dr: размер окна графика.
  • mo: цвет линии.
  • a, b: координаты верхнего и нижнего края окна графика.
  • X, Yx: координаты правой и левой границы окна графика. Код начинается с объявления всех переменных и начальных значений. Затем он запрашивает у пользователя номер функции и начальное значение x. После этого он вычисляет шаг оси x и y, а также определяет размеры окна графика. Затем идет цикл, который проходит по всем точкам функции. Внутри цикла происходит проверка условия, при котором отображается символ *. Это условие выполняется каждые 5 итераций. После завершения цикла происходит вывод координат верхней и нижней границ окна графика, а также значения функции для выбранной точки. Наконец, код выводит координаты левой границы окна графика и значение функции для выбранной точки.

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


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

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

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

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

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

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