Нарисовать график (с помощью модуля GRAPH в паскаль) - Pascal

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

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

у меня есть программка....очь простая.....но причина в том что мне к ней нужно нарисовать график (с помощью модуля GRAPH в паскаль)
program zadanie1;
           var n:integer;
                k,S:real;
           begin
                writeln ('введите k');
                readln (k);
                S:=0;
                n:=2001;
                repeat S:=S+k;
                          n:=n+2;
                          k:=K*0.8;
                until    k<5;
                writeln ('n=',n:4);
           end.
плз очь прошу помочь.....и если эт возможно до вечера!! зарание спасибочки

Решение задачи: «Нарисовать график (с помощью модуля GRAPH в паскаль)»

textual
Листинг программы
program zadanie1;
uses crt,graph;
var n,i,gd,gm,x0,y0:integer;
    g:array[1..20] of integer;{массив лет 2001-2015}
    u:array[1..20] of real;{массив урожаев}
    mx,my:real;{масштаб по осям в граф.режиме}
    s:string;{строка для вывода чисел в гр.режиме}
begin
clrscr;
n:=1;{первый год}
g[1]:=2001;
u[1]:=20;
writeln(g[1],u[1]:8:1);
repeat
n:=n+1;{следующие годы}
g[n]:=g[n-1]+2;{+2 к предыдущему}
u[n]:=u[n-1]*0.8;{х 0,8 предыдущий}
writeln(g[n],u[n]:8:1);
until u[n]<5;
writeln('Nachinaya s ',g[n],' goda budet sobrano < 5t');
readln;
gd:=0;
initgraph(gd,gm,'');{переходим в графику}
{начало координат}
x0:=30;
y0:=460;
{масштабы по осям}
mx:=(600-x0)/(g[n]-g[1]);{делим ширину выбранного окна на разность макс. и мин. значений лет}
my:=(y0-40)/u[1];{высоту выбранного окна на разность макс и мин урожая}
{оси}
line(x0,y0,620,y0);
line(x0,y0,x0,10);
for i:=0 to 7 do{максимальное количество засечек в одну сторону=8}
 begin
 {засечки по Х}
  line(x0+round(i*2*mx),y0+3,x0+round(i*2*mx),y0-3);{от начала оси откладываем отрезки через 2, умноженные на масштаб}
  str(2000+i*2+1,s);{преобразуем года в строки}
  outtextXY(round(x0+i*2*mx+2),y0+10,s);{выводим около засечек}
 {засечки по Y}
  line(x0-3,round(y0-i*5*my),x0+3,round(y0-i*5*my));{тоже с урожаем, по оси У}
  str(i*5,s);
  outtextXY(x0-15,round(y0-i*5*my-10),s);
 end;
{график}
moveto(x0,y0-round(u[1]*my));{в первую точку слева}
Setlinestyle(1,0,3);{толстенькой линией}
Setcolor(12);{рисуем красный кружок}
Circle(x0,round(y0-round(u[1]*my)),1);
for i:=2 to n do{в цикле берем данные из массивов, рисуем линию и кружки}
 begin
  Setcolor(11);
  Setlinestyle(1,0,0);
  lineto(round((g[i]-2000)*mx)-5,round(y0-round(u[i]*my)));
  Setlinestyle(1,0,3);
  Setcolor(12);
  Circle(round((g[i]-2000)*mx)-5,round(y0-round(u[i]*my)),1);
 end;
Setlinestyle(1,0,0);{проведем линию У=5 для наглядности}
Setcolor(10);
line(x0,round(y0-5*my),620,round(y0-5*my));
readln;
closegraph
end.

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

program zadanie1; uses crt,graph; var n,i,gd,gm,x0,y0:integer;     g:array[1..20] of integer;     u:array[1..20] of real;     mx,my:real;     s:string; begin clrscr; n := 1; g[1] := 2001; u[1] := 20; writeln(g[1], u[1]:8:1); repeat n := n + 1; g[n] := g[n-1] + 2; u[n] := u[n-1] 0.8; writeln(g[n], u[n]:8:1); until u[n] < 5; writeln('Nachinaya s ', g[n], ' goda budet sobrano < 5t'); readln; gd := 0; initgraph(gd, gm, ''); {начало координат} x0 := 30; y0 := 460; {масштабы по осям} mx := (600 - x0) / (g[n] — g[1]); my := (y0 — 40) / u[1]; {оси} line(x0, y0, 620, y0); line(x0, y0, x0, 10); for i := 0 to 7 do begin {засечки по Х} line(x0 + round(i 2 mx), y0 + 3, x0 + round(i 2 mx), y0 — 3); str(2000 + i 2 + 1, s); outtextXY(round(x0 + i 2 mx + 2), y0 + 10, s); {засечки по Y} line(x0 — 3, round(y0 — i 5 my), x0 + 3, round(y0 — i 5 my)); str(i 5, s); outtextXY(x0 — 15, round(y0 — i 5 my — 10), s); end; {график} moveto(x0, y0 — round(u[1] my)); Setlinestyle(1, 0, 3); Setcolor(12); Circle(x0, round(y0 — round(u[1] my)), 1); for i := 2 to n do begin Setcolor(11); Setlinestyle(1, 0, 0); lineto(round((g[i] — 2000) mx) — 5, round(y0 — round(u[i] my))); Setlinestyle(1, 0, 3); Setcolor(12); Circle(round((g[i] — 2000) mx) — 5, round(y0 — round(u[i] my)), 1); end; Setlinestyle(1, 0, 0); line(x0, round(y0 — 5 my), 620, round(y0 — 5 * my)); readln; closegraph; end.

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


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

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

11   голосов , оценка 3.818 из 5
Похожие ответы