Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
3 / 3 / 1
Регистрация: 31.01.2013
Сообщений: 108
1

График температур. Подправить код из turbo (не знаю где писать в PascalABC или PascalABC.net)

23.02.2013, 10:17. Просмотров 1642. Ответов 2
Метки нет (Все метки)

На Pascal ABC не запускается((

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
uses crt,graph;
const n=31;
      {массив - константа, можно ввести с клавиатуры}
      a:array[1..n] of integer=(-10,-15,-9,-8,-5,-8,-6,-2, 0,-1,
                                  2,  4, 6, -2, 4, 6, 8, 8,10, 6,
                                  9, 11, 9, 8, 6, 9,12,13, 9, 8, 5);
var gd,gm,x0,y0,i,max:integer;
    mx,my,x:real;
    s:string;
begin
gd:=0;
initgraph(gd,gm,'');
x0:=40;{начало координат}
y0:=getmaxY div 2;
mx:=(getmaxX-40)/n;{массштаб по оси Х}
max:=abs(a[1]);
for i:=1 to n do
if abs(a[i])>max then max:=abs(a[i]);{найдем максимальный модуль}
my:=(y0-20)/max;{масштаб по оси У}
line(x0,y0,getmaxX-2,y0);{ось дней}
outtextXY(getmaxX-20,y0-15,'D');
for i:=1 to n do
 begin
  line(x0+round(mx*(i-1)),y0-3,x0+round(mx*(i-1)),y0+3);{засечки}
  str(i,s);
  outtextXY(x0+round(mx*(i-1)+3),y0+15,s);{подписи}
 end;
line(x0,y0+round(my*max),x0,y0-round(my*max));{ось температур}
outtextXY(x0+5,y0-round(my*max),'t');
for i:=-max to max do
 begin
  line(x0-3,y0+round(my*i),x0+3,y0+round(my*i));
  str(i:3,s);
  outtextXY(x0-30,y0-round(my*i),s);
 end;
for i:=2 to n do{линия графика}
 begin
  if (a[i-1]>=0)and(a[i]>=0) then{если соседние точки выше ноля}
    begin
     setcolor(12);
     line(x0+round((i-2)*mx),y0-round(a[i-1]*my),
     x0+round((i-1)*mx),y0-round(a[i]*my));
    end
  else if(a[i-1]<=0)and(a[i]<=0) then{ниже ноля}
     begin
      setcolor(9);
      line(x0+round((i-2)*mx),y0-round(a[i-1]*my),
      x0+round((i-1)*mx),y0-round(a[i]*my));
     end
  else if a[i-1]*a[i]<0 then{по разные стороны}
   begin
    x:=abs(a[i-1])/(abs(a[i-1])+abs(a[i]));{вычисляем ординату пересечения с осью Х}
    if a[i-1]<0 then{если левая точка ниже}
     begin
      setcolor(9);
      line(x0+round((i-2)*mx),y0-round(a[i-1]*my),x0+round((i-2)*mx)+round(x*mx),y0);
      setcolor(12);
      line(x0+round((i-2)*mx)+round(x*mx),y0,x0+round((i-1)*mx),y0-round(a[i]*my));
     end
    else{если првая ниже}
     begin
      setcolor(12);
      line(x0+round((i-2)*mx),y0-round(a[i-1]*my),x0+round((i-2)*mx)+round(x*mx),y0);
      setcolor(9);
      line(x0+round((i-2)*mx)+round(x*mx),y0,x0+round((i-1)*mx),y0-round(a[i]*my));
     end
   end
 end;
for i:=1 to n do{рисуем точки - кружочки}
 begin
  if a[i]<0 then setcolor(9)
  else if a[i]=0 then setcolor(15)
  else setcolor(12);
  circle(x0+round((i-1)*mx),y0-round(a[i]*my),2);
 end;
readln
end.
-------------------
Знаю, что initgraph не нужен. Модуль graph должен запиcываться как graphABC.
Но программа всё равно не запускается.. В общем прошу помощи, подсказки..
Последний пример, но не пойму что надо ему(
------------------------
Само задание: Даны целые числа t1, t2, ... t31, – задающие график температур за март месяц. Построить график температур. Отрезки прямых, лежащие выше 0 градусов Цельсия и лежащие ниже 0 градусов Цельсия, должны быть окрашены в разные цвета.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2013, 10:17
Ответы с готовыми решениями:

Где можно скачать PascalABC а не PascalABC.Net
Где можно скачать PascalABC а не PascalABC.Net?

Переделать код программы из Turbo Pascal в PascalABC
Ребят может кто-нибудь помочь пожалуйста из PascalABC.NET в PascalABC переделать код программы и...

Друзья, подскажите, где можно скачать PascalABC БЕЗ .net!
Все ссылки просмотрела, либо файлы удалены, либо вредоносное ПО. Если у кого-то есть установочный...

Из Turbo Pascal в PascalABC.NET
Добрый день! Может кто-нибудь помочь переписать код программы из Turbo Pascal (если не ошибаюсь,...

2
Модератор
62542 / 46715 / 32198
Регистрация: 18.05.2008
Сообщений: 113,062
23.02.2013, 10:31 2
Для АВС
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
uses crt,graphABC;
const n=31;
      {массив - константа, можно ввести с клавиатуры}
      a:array[1..n] of integer=(-10,-15,-9,-8,-5,-8,-6,-2, 0,-1,
                                  2,  4, 6, -2, 4, 6, 8, 8,10, 6,
                                  9, 11, 9, 8, 6, 9,12,13, 9, 8, 5);
var x0,y0,i,max:integer;
    mx,my,x:real;
    s:string;
begin
x0:=40;{начало координат}
y0:=windowheight div 2;
mx:=(windowwidth-40)/n;{массштаб по оси Х}
max:=abs(a[1]);
for i:=1 to n do
if abs(a[i])>max then max:=abs(a[i]);{найдем максимальный модуль}
my:=(y0-20)/max;{масштаб по оси У}
line(x0,y0,windowwidth-2,y0);{ось дней}
textout(windowwidth-20,y0-15,'D');
for i:=1 to n do
 begin
  line(x0+round(mx*(i-1)),y0-3,x0+round(mx*(i-1)),y0+3);{засечки}
  str(i,s);
  textout(x0+round(mx*(i-1)+3),y0+15,s);{подписи}
 end;
line(x0,y0+round(my*max),x0,y0-round(my*max));{ось температур}
textout(x0+5,y0-round(my*max),'t');
for i:=-max to max do
 begin
  line(x0-3,y0+round(my*i),x0+3,y0+round(my*i));
  str(i:3,s);
  textout(x0-30,y0-round(my*i),s);
 end;
for i:=2 to n do{линия графика}
 begin
  if (a[i-1]>=0)and(a[i]>=0) then{если соседние точки выше ноля}
    begin
     setpencolor(clred);
     line(x0+round((i-2)*mx),y0-round(a[i-1]*my),
     x0+round((i-1)*mx),y0-round(a[i]*my));
    end
  else if(a[i-1]<=0)and(a[i]<=0) then{ниже ноля}
     begin
      setpencolor(clblue);
      line(x0+round((i-2)*mx),y0-round(a[i-1]*my),
      x0+round((i-1)*mx),y0-round(a[i]*my));
     end
  else if a[i-1]*a[i]<0 then{по разные стороны}
   begin
    x:=abs(a[i-1])/(abs(a[i-1])+abs(a[i]));{вычисляем ординату пересечения с осью Х}
    if a[i-1]<0 then{если левая точка ниже}
     begin
      setpencolor(clblue);
      line(x0+round((i-2)*mx),y0-round(a[i-1]*my),x0+round((i-2)*mx)+round(x*mx),y0);
      setpencolor(clred);
      line(x0+round((i-2)*mx)+round(x*mx),y0,x0+round((i-1)*mx),y0-round(a[i]*my));
     end
    else{если првая ниже}
     begin
      setpencolor(clred);
      line(x0+round((i-2)*mx),y0-round(a[i-1]*my),x0+round((i-2)*mx)+round(x*mx),y0);
      setpencolor(clblue);
      line(x0+round((i-2)*mx)+round(x*mx),y0,x0+round((i-1)*mx),y0-round(a[i]*my));
     end
   end
 end;
for i:=1 to n do{рисуем точки - кружочки}
 begin
  if a[i]<0 then setpencolor(clblue)
  else if a[i]=0 then setpencolor(clblack)
  else setpencolor(clred);
  circle(x0+round((i-1)*mx),y0-round(a[i]*my),2);
 end;
end.
1
3 / 3 / 1
Регистрация: 31.01.2013
Сообщений: 108
23.02.2013, 10:36  [ТС] 3
Огромное вам спасибо! хотелось бы тоже вносить интеллектуальный вклад этому форуму, но даже не представляю, чем мог бы я помочь.
Спасибо за оперативный ответ!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2013, 10:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перевод с Turbo Pascal на PascalABC.NET
господа, можете помочь? у меня тут программа написана на языке турбо паскаль. пожалуйста переводите...

Перевод из turbo Pascal в PascalABC.NET
Здраствуйте. Буду признателен, если поможете переделать программу, созданную в turbo Pascal, под...

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в...

Я создал модуль в Turbo Pascal 7.0, как использовать его в PascalABC.NET?
Как подключить этот модуль, в какую папку сохранить, я вот смотрю в структуру каталогов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.