Построение графиков функций (перевести в PascalABC) - Pascal ABC
Формулировка задачи:
программа была набрана в турбо паскале, помогите перевести его в PascalABC
Листинг программы
- program chukreev;
- uses graph,crt;
- var y:array[1..101] of real;nom:integer;
- i,k,l,n,mx,dr,mo:integer; a,b,x,h,ymax,ymin,my: real;
- xs: string [5]; Yx:string[20];
- begin
- clrscr;
- writeln(' Виды функций');
- writeln('1: y:=sqr(x)-x+1');writeln('2: y:=sin(x)/cos(x)');
- writeln('3: y:=cos(x)');writeln('4: y:=sqrt(x)');
- writeln('5: y:=3*x+1');writeln('6: y:=-x/2'); writeln('7: y:=exp(3*ln(x))');
- writeln('8: y:=1/x'); writeln('9: y:=sqr(x)');
- write('введите номер:');readln(nom);
- write('введите начальное значение x='); readln(a);
- write('введите конечное значение x='); readln(b);
- write('введите число точек ='); readln(n);
- ymax:=-maxint;ymin:=maxint; h:=(b-a)/n;
- readln;
- x:=a;
- for i:=1 to n do
- begin
- Case nom of
- {1: y[i]:=sqr(x)-x+1;
- {2: y[i]:=sin(x)/cos(x);}
- {3: y[i]:=cos(x);
- {4: y[i]:=sqrt(x);}
- {5: y[i]:=3*x+1;
- {6: y[i]:=-x/2;
- {7: y[i]:=exp(3*ln(x));}
- 8: y[i]:=1/x;
- 9: y[i]:=sqr(x);
- end;
- if y[i]>ymax then ymax:=y[i];
- if y[i]<ymin then ymin:=y[i];
- x:=x+h; end;
- dr:=detect; initgraph(dr,mo,'c:\tp7\bgi');
- mx:=round((getmaxx-50)/n);
- my:=(ymax-ymin)/(getmaxy-20);
- k:=round(abs(ymin)/my);
- line(20,20,20,getmaxy-20);
- outtextxy(18,20,'^'); outtextxy(10,10,'y');
- line(20,getmaxy-20-k,getmaxx-20,getmaxy-20-k);
- outtextxy(getmaxx-20,getmaxy-22-k,'>');
- outtextxy(getmaxx-20,getmaxy-15-k,'x');
- Case nom of
- 1: Yx:='sqr(x)-x+1';
- 2: Yx:='sin(x)/cos(x)';
- 3: Yx:='cos(x)';
- 4: Yx:='sqrt(x)';
- 5: Yx:='3*x+1';
- 6: Yx:='-x/2';
- 7: Yx:='exp(3*ln(x))';
- 8: Yx:='1/x';
- 9: Yx:='sqr(x)';
- end;
- outtextxy(getmaxx-100,getmaxy-10,Yx); X:=A;
- {outtextxy(getmaxx-100,getmaxy-10,'y=x^2-X+1'); X:=A;}
- for i:=1 to n do
- begin
- str(x,xs); l:=round((y[i]-ymin)/my);
- if(i-1) mod 5=0 then outtextxy((i-1)*mx+20,getmaxy-15-k,xs);
- outtextxy((i-1)*mx+20,getmaxy-20-l,'*');x:=x+h
- end;
- repeat until keypressed; closegraph
- end.
Решение задачи: «Построение графиков функций (перевести в PascalABC)»
textual
Листинг программы
- program chukreev;
- uses graphABC,crt;
- var y:array[1..101] of real;
- nom:integer;
- i,k,l,n,mx,dr,mo:integer;
- a,b,x,h,ymax,ymin,my: real;
- xs,Yx:string;
- begin
- hidecursor;
- writeln(' Виды функций');
- writeln('1: y:=sqr(x)-x+1');writeln('2: y:=sin(x)/cos(x)');
- writeln('3: y:=cos(x)');writeln('4: y:=sqrt(x)');
- writeln('5: y:=3*x+1');writeln('6: y:=-x/2'); writeln('7: y:=exp(3*ln(x))');
- writeln('8: y:=1/x'); writeln('9: y:=sqr(x)');
- write('введите номер:');readln(nom);
- write('введите начальное значение x='); readln(a);
- write('введите конечное значение x='); readln(b);
- write('введите число точек ='); readln(n);
- ymax:=-maxint;
- ymin:=maxint;
- h:=(b-a)/n;
- readln;
- clearwindow;
- x:=a;
- for i:=1 to n do
- begin
- Case nom of
- {1: y[i]:=sqr(x)-x+1;
- {2: y[i]:=sin(x)/cos(x);}
- {3: y[i]:=cos(x);
- {4: y[i]:=sqrt(x);}
- {5: y[i]:=3*x+1;
- {6: y[i]:=-x/2;
- {7: y[i]:=exp(3*ln(x));}
- 8: y[i]:=1/x;
- 9: y[i]:=sqr(x);
- end;
- if y[i]>ymax then ymax:=y[i];
- if y[i]<ymin then ymin:=y[i];
- x:=x+h;
- end;
- mx:=round((windowwidth-50)/n);
- my:=(ymax-ymin)/(windowheight-20);
- k:=round(abs(ymin)/my);
- line(20,20,20,windowheight-20);
- textout(18,20,'^');
- textout(10,10,'y');
- line(20,windowheight-20-k,windowwidth-20,windowheight-20-k);
- textout(windowwidth-20,windowheight-22-k,'>');
- textout(windowwidth-20,windowheight-15-k,'x');
- Case nom of
- 1: Yx:='sqr(x)-x+1';
- 2: Yx:='sin(x)/cos(x)';
- 3: Yx:='cos(x)';
- 4: Yx:='sqrt(x)';
- 5: Yx:='3*x+1';
- 6: Yx:='-x/2';
- 7: Yx:='exp(3*ln(x))';
- 8: Yx:='1/x';
- 9: Yx:='sqr(x)';
- end;
- textout(windowwidth-100,windowheight-10,Yx);
- X:=A;
- for i:=1 to n do
- begin
- str(x,xs); l:=round((y[i]-ymin)/my);
- if(i-1) mod 5=0 then textout((i-1)*mx+20,windowheight-15-k,xs);
- textout((i-1)*mx+20,windowheight-20-l,'*');
- x:=x+h
- end;
- 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 итераций. После завершения цикла происходит вывод координат верхней и нижней границ окна графика, а также значения функции для выбранной точки. Наконец, код выводит координаты левой границы окна графика и значение функции для выбранной точки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д