Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 02.07.2019
Сообщений: 4
1

Перевести из Turbo Pascal в Pascal ABC

02.07.2019, 20:54. Просмотров 1830. Ответов 6
Метки нет (Все метки)

Добрый вечер. Необходимо перевести этот код из Turbo Pascal в 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
uses crt,graph;
function F(x:real):real; 
begin 
F:=2*sin(x)+0.5*cos(x);
end; 
const xn=0; 
xk=2*pi; 
h=0.001; 
var x,y,mx,my:real; 
n,i,gd,gm,x0,y0:integer; 
st:string; 
begin 
gd:=0; 
initgraph(gd,gm,''); 
x0:=40; 
y0:=getmaxY div 2; 
mx:=(getmaxX-60)/(xk-xn); 
my:=100; 
line(20,y0,getmaxX-20,y0); 
outtextXY(getmaxX-15,y0-15,'X'); 
for i:=1 to round(xk)+1 do 
begin 
line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3); 
line(x0-round(i*mx),y0+3,x0-round(i*mx),y0-3); 
line(x0+3,y0+round(i*my),x0-3,y0+round(i*my)); 
line(x0+3,y0-round(i*my),x0-3,y0-round(i*my)); 
str(i,st); 
outtextXY(x0+round(i*mx),y0+10,st); 
outtextXY(x0-round(i*mx),y0+10,'-'+st); 
outtextXY(x0-20,y0-round(i*my),st); 
outtextXY(x0-20,y0+round(i*my),'-'+st); 
end; 
line(x0,getmaxY-20,x0,20); 
outtextXY(x0-15,10,'Y'); 
x:=xn; 
while x<=xk do 
begin 
if (x>=pi)and(x<=1.5*pi)and(F(x)<0) then y:=1
else y:=F(x); 
putpixel(x0+round(x*mx),y0-round(y*my),12); 
x:=x+h; 
end; 
readln 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2019, 20:54
Ответы с готовыми решениями:

Нужно перевести код из Turbo Pascal в Pascal ABC
Program n5; { Задача. Описать функцию less(f) от непустого файла f ...

Переделайте, пожалуйста, программу из Turbo pascal в ABC pascal
Помогите, пожалуйста, перевести из PASCAL TURBO в PASCAL ABC Program ProgInt; Uses Crt,...

Переписать код из Turbo Pascal в Pascal ABC
Переписать код из Turbo Pascal в pascal ABCprogram zadacha; uses crt, graph; const m=50; var...

Переписать код из Turbo Pascal в Pascal ABC
Программа 1: program zadacha; uses crt, graph; const m=150; var gd,gm,i,j,s1,s2,c: integer;...

6
354 / 222 / 119
Регистрация: 25.06.2019
Сообщений: 822
02.07.2019, 21:10 2
Лучший ответ Сообщение было отмечено antonio_querte как решение

Решение

странный график
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
uses  graphABC; 
 
procedure KeyDown(key: integer);
begin
  Window.Close;
end;  
   
function F(x:real):real; 
begin 
  F:=2*sin(x)+0.5*cos(x);
end; 
const xn=0; 
      xk=2*pi; 
      h=0.001; 
var x,y,mx,my:real; 
    i,x0,y0:integer; 
    st:string; 
begin 
  x0:=40; 
  y0:=Window.Height div 2; 
  mx:=(Window.Width-60)/(xk-xn); 
  my:=100; 
  line(20,y0,Window.Width-20,y0); 
  textout(Window.Width-15,y0-15,'X'); 
  for i:=1 to round(xk)+1 do 
  begin 
    line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3); 
    line(x0-round(i*mx),y0+3,x0-round(i*mx),y0-3); 
    line(x0+3,y0+round(i*my),x0-3,y0+round(i*my)); 
    line(x0+3,y0-round(i*my),x0-3,y0-round(i*my)); 
    str(i,st); 
    textout(x0+round(i*mx),y0+10,st); 
    textout(x0-round(i*mx),y0+10,'-'+st); 
    textout(x0-20,y0-round(i*my),st); 
    textout(x0-20,y0+round(i*my),'-'+st); 
  end; 
  line(x0,Window.Width-20,x0,20); 
  textout(x0-15,10,'Y'); 
  x:=xn; 
  while x<=xk do 
  begin 
    if (x>=pi)and(x<=1.5*pi)and(F(x)<0) then y:=1
    else y:=F(x); 
    putpixel(x0+round(x*mx),y0-round(y*my),Color.Red); 
    x:=x+h; 
  end; 
  OnKeyDown:=KeyDown;
end.
1
0 / 0 / 0
Регистрация: 02.07.2019
Сообщений: 4
02.07.2019, 21:36  [ТС] 3
Да, график интересный)
Не подскажите, каким образом при таком шаге можно добавить адекватные линии между точками?
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
uses  graphABC; 
 
procedure KeyDown(key: integer);
begin
  Window.Close;
end;  
   
function F(x:real):real; 
begin 
  F:=2*sin(x)+0.5*cos(x);
end; 
const xn=0; 
      xk=2*pi; 
      h=pi/18; 
var x,y,mx,my:real; 
    i,x0,y0:integer; 
    st:string; 
begin 
  x0:=40; 
  y0:=Window.Height div 2; 
  mx:=(Window.Width-60)/(xk-xn); 
  my:=100; 
  line(20,y0,Window.Width-20,y0); 
  textout(Window.Width-15,y0-15,'X'); 
  for i:=1 to round(xk)+1 do 
  begin 
    line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3); 
    line(x0-round(i*mx),y0+3,x0-round(i*mx),y0-3); 
    line(x0+3,y0+round(i*my),x0-3,y0+round(i*my)); 
    line(x0+3,y0-round(i*my),x0-3,y0-round(i*my)); 
    str(i,st); 
    textout(x0+round(i*mx),y0+10,st); 
    textout(x0-round(i*mx),y0+10,'-'+st); 
    textout(x0-20,y0-round(i*my),st); 
    textout(x0-20,y0+round(i*my),'-'+st); 
  end; 
  line(x0,Window.Width-20,x0,20); 
  textout(x0-15,10,'Y'); 
  x:=xn; 
  while x<=xk do 
  begin 
    if (x>=pi)and(x<=1.5*pi)and(F(x)<0) then y:=1
    else y:=F(x); 
    putpixel(x0+round(x*mx),y0-round(y*my),Color.Red); 
    x:=x+h; 
  end; 
  OnKeyDown:=KeyDown;
end.
0
354 / 222 / 119
Регистрация: 25.06.2019
Сообщений: 822
02.07.2019, 21:37 4
какими точками?
0
0 / 0 / 0
Регистрация: 02.07.2019
Сообщений: 4
02.07.2019, 21:45  [ТС] 5
При таком шаге (h = pi/18) график отображается точками, т.е. нужны линии между ними, а у меня получается как-то так...
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
uses graphABC; 
 
procedure KeyDown(key: integer); 
begin 
Window.Close; 
end; 
 
function F(x:real):real; 
begin 
F:=2*sin(x)+0.5*cos(x); 
end; 
const xn=0; 
xk=2*pi; 
h=pi/18; 
var x,y,mx,my:real; 
i,x0,y0, px,py:integer; 
st:string; 
begin 
x0:=40; 
y0:=Window.Height div 2; 
mx:=(Window.Width-60)/(xk-xn); 
my:=100; 
line(20,y0,Window.Width-20,y0); 
textout(Window.Width-15,y0-15,'X'); 
for i:=1 to round(xk)+1 do 
begin 
line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3); 
line(x0-round(i*mx),y0+3,x0-round(i*mx),y0-3); 
line(x0+3,y0+round(i*my),x0-3,y0+round(i*my)); 
line(x0+3,y0-round(i*my),x0-3,y0-round(i*my)); 
str(i,st); 
textout(x0+round(i*mx),y0+10,st); 
textout(x0-round(i*mx),y0+10,'-'+st); 
textout(x0-20,y0-round(i*my),st); 
textout(x0-20,y0+round(i*my),'-'+st); 
end; 
line(x0,Window.Width-20,x0,20); 
textout(x0-15,10,'Y'); 
x:=xn; 
while x<=xk do 
begin 
if (x>=pi)and(x<=1.5*pi)and(F(x)<0) then y:=1 
else y:=F(x); 
x:=x+h; 
px:=x0+round(x*mx); 
py:=y0-round(y*my); 
lineto(px,py); 
end; 
setfontsize(14); 
 
OnKeyDown:=KeyDown; 
end.
0
354 / 222 / 119
Регистрация: 25.06.2019
Сообщений: 822
02.07.2019, 21:58 6
Лучший ответ Сообщение было отмечено antonio_querte как решение

Решение

внизу
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
..............
x:=xn; 
setpencolor(Color.Red);
while x<=xk do 
begin 
if (x>=pi)and(x<=1.5*pi)and(F(x)<0) then y:=1 
else y:=F(x); 
px:=x0+round(x*mx); 
py:=y0-round(y*my); 
if x=xn then moveto(px,py);
lineto(px,py); 
x:=x+h; 
end;
...........
1
0 / 0 / 0
Регистрация: 02.07.2019
Сообщений: 4
02.07.2019, 22:03  [ТС] 7
Большое спасибо за помощь. Сейчас всё красиво.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2019, 22:03

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

Переписать программу с Turbo Pascal на Pascal ABC
Нужно переделать программу,написанную на Turbo Pascal в ту,чтобы работала на Pascal ABC. Помогите...

Переписать код из Turbo Pascal в Pascal ABC
Переписать код из Turbo Pascal в Pascal ABCprogram zadacha; uses crt, graph; const m=150; var...

Переписать программу с Turbo Pascal на Pascal ABC
Здравствуйте, не могли бы помочь переписать программу с Turbo Pascal на Pascal ABC. Хоть убейте не...

Переписать код из Turbo Pascal в pascal ABC
очень плохо знаю Turbo Pascal, а времени на изучение нет, а его надо переписать в Pascal ABC, буду...


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

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

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