Другие языки программирования и технологии
Метеонаблюдения за месяц. В паскаль в системе GRAPHABC
Ввести температуру по дням за ноябрь 2018 г. Выводить среднюю температуру, максимальную, минимальную за месяц .Построить график изменения температуры.
uses GraphABC;
Var a: array [1..31] of integer;
s,min, max: integer;
sr:real;
x,y, w, h,x0,y0, x1, y1, k:integer;
Begin
For var i:=1 to 31 do
begin
readln(a[i]);{a[i]:=random(21);}
s:=s+a[i];
end;
sr:=s/31;
max:= a[1]; min:= a[1];
For var i:=2 to 31 do
begin
if a[i]>max then max:= a[i];
if a[i]<min then min:= a[i];
end;
writeln ('Максимальная температура =', max);
writeln ('Минимальная температура =', min);
writeln ('Средняя температура =', sr:5:1);
w:=800;{ширина графического окна}
h:=600; {высота графического окна}
x0:=0; y0:=600;{начало координат}
k:=20; {множитель}
setwindowsize(w,h);
textout(20,60,'График температур');
line(0,y0,w,y0); {ось X}
line(x0,0,x0,h); {ось Y}
x:=0;y:=a[1]; {точка температуры в первый день}
x1:=round(x0+k*x); {экранные координаты}
y1:= round(y0-k*y); {экранные координаты}
setpixel(x1,y1,clBlack);
for var i:=2 to 31 do
begin
y:=a[i];
x1:=round(x0+k*x); {экранные координаты}
y1:= round(y0-k*y); {экранные координаты}
lineto(x1,y1,clBlack);
x:=x+1;
end;
End.
Var a: array [1..31] of integer;
s,min, max: integer;
sr:real;
x,y, w, h,x0,y0, x1, y1, k:integer;
Begin
For var i:=1 to 31 do
begin
readln(a[i]);{a[i]:=random(21);}
s:=s+a[i];
end;
sr:=s/31;
max:= a[1]; min:= a[1];
For var i:=2 to 31 do
begin
if a[i]>max then max:= a[i];
if a[i]<min then min:= a[i];
end;
writeln ('Максимальная температура =', max);
writeln ('Минимальная температура =', min);
writeln ('Средняя температура =', sr:5:1);
w:=800;{ширина графического окна}
h:=600; {высота графического окна}
x0:=0; y0:=600;{начало координат}
k:=20; {множитель}
setwindowsize(w,h);
textout(20,60,'График температур');
line(0,y0,w,y0); {ось X}
line(x0,0,x0,h); {ось Y}
x:=0;y:=a[1]; {точка температуры в первый день}
x1:=round(x0+k*x); {экранные координаты}
y1:= round(y0-k*y); {экранные координаты}
setpixel(x1,y1,clBlack);
for var i:=2 to 31 do
begin
y:=a[i];
x1:=round(x0+k*x); {экранные координаты}
y1:= round(y0-k*y); {экранные координаты}
lineto(x1,y1,clBlack);
x:=x+1;
end;
End.
uses graphabc;
var i, kx, ky, mini, maxi, summa: integer;
a: array [1..30] of integer;
begin
setwindowsize (800,610);
setwindowtitle ('График температуры НОЯБРЬ 2018');
setpencolor (clBlack);
setpenwidth (1);
moveto (100, 300);
lineto (720, 300);
moveto (100, 520);
lineto (100, 50);
textout (100,50,'t, град.');
textout (720,300,'дата');
//ось Ох
setpencolor (clGreen);
for i:=1 to 30 do
begin
moveto (100+i*20,302);
lineto (100+i*20,298);
if i mod 3 = 0 then
begin
setpencolor (cllightgray);
lineto (100+i*20,520);
setpencolor (clGreen);
textout (95+i*20,305, i);
end;
end;
//ось Y
for i:=1 to 30 do
begin
if i mod 2 = 0 then textout (80,519-i*15, -15+i);
moveto (98, 525-i*15);
lineto (102, 525-i*15);
end;
kx:=200;
ky:=0;
summa:=0;
for i:=1 to 30 do
begin
a[i]:= -15+ random (10);
summa:=summa+a[i];
if i = 1 then
begin
maxi:=1;
mini:=1;
end;
if a[i] > a[maxi] then maxi:=i;
if a[i] < a[mini] then mini:=i;
if i mod 10 = 1 then
begin
kx:=kx+150;
ky:=0;
end;
ky:=ky+25;
textout (kx, ky, 'day['+i+']='+a[i]);
end;
moveto (100,300+15*abs(a[i]));
for i:=1 to 30 do
lineto (100+i*20,300+15*abs(a[i]));
setpencolor (clred);
textout (20,290+abs(a[mini])*15, 'minimum');
line (95,300+15*abs(a[mini]),700,300+15*abs(a[mini]));
textout (20,290+abs(a[maxi])*15, 'maximum');
line (95,300+15*abs(a[maxi]),700,300+15*abs(a[maxi]));
textout (20,290+round(abs(summa/2)), 'srednee');
line (95,300+round(abs(summa/2)),700,300+round(abs(summa/2)));
textout (20,550, 'максимальная температура = '+a[maxi]);
textout (20,570, 'минимальная температура = '+a[mini]);
textout (20,590, 'среднесуточная температура = ' + round(summa/30*100)/100);
end.
var i, kx, ky, mini, maxi, summa: integer;
a: array [1..30] of integer;
begin
setwindowsize (800,610);
setwindowtitle ('График температуры НОЯБРЬ 2018');
setpencolor (clBlack);
setpenwidth (1);
moveto (100, 300);
lineto (720, 300);
moveto (100, 520);
lineto (100, 50);
textout (100,50,'t, град.');
textout (720,300,'дата');
//ось Ох
setpencolor (clGreen);
for i:=1 to 30 do
begin
moveto (100+i*20,302);
lineto (100+i*20,298);
if i mod 3 = 0 then
begin
setpencolor (cllightgray);
lineto (100+i*20,520);
setpencolor (clGreen);
textout (95+i*20,305, i);
end;
end;
//ось Y
for i:=1 to 30 do
begin
if i mod 2 = 0 then textout (80,519-i*15, -15+i);
moveto (98, 525-i*15);
lineto (102, 525-i*15);
end;
kx:=200;
ky:=0;
summa:=0;
for i:=1 to 30 do
begin
a[i]:= -15+ random (10);
summa:=summa+a[i];
if i = 1 then
begin
maxi:=1;
mini:=1;
end;
if a[i] > a[maxi] then maxi:=i;
if a[i] < a[mini] then mini:=i;
if i mod 10 = 1 then
begin
kx:=kx+150;
ky:=0;
end;
ky:=ky+25;
textout (kx, ky, 'day['+i+']='+a[i]);
end;
moveto (100,300+15*abs(a[i]));
for i:=1 to 30 do
lineto (100+i*20,300+15*abs(a[i]));
setpencolor (clred);
textout (20,290+abs(a[mini])*15, 'minimum');
line (95,300+15*abs(a[mini]),700,300+15*abs(a[mini]));
textout (20,290+abs(a[maxi])*15, 'maximum');
line (95,300+15*abs(a[maxi]),700,300+15*abs(a[maxi]));
textout (20,290+round(abs(summa/2)), 'srednee');
line (95,300+round(abs(summa/2)),700,300+round(abs(summa/2)));
textout (20,550, 'максимальная температура = '+a[maxi]);
textout (20,570, 'минимальная температура = '+a[mini]);
textout (20,590, 'среднесуточная температура = ' + round(summa/30*100)/100);
end.
Похожие вопросы
- Как за месяц выучить паскаль? с чего мне начать???
- Задача системы исчисления Паскаль
- Помогите с паскалем. Помогите написать программу переводящую из 10-ой в 16-ую систему счисления на паскале
- Системы счисления в паскале
- Аналог ассоциативного массива в Паскале.
- Я внутри написал, что я знаю про паскаль не то что решать и все такое а так теоретический в общем, смысл проги, я прав?
- ПАСКАЛЬ и ГРАФИКА
- Товарищи программисты на Delphi и Pascal помогите девушке!!!)) вопрос глупый..насчет паскаля..
- Проблема с оператором random в паскале
- С++, блин, легче Паскаля.
а то ошибку выдаёт в строке readln(a[i]);{a[i]:=random(21);}