Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 2
Регистрация: 11.05.2015
Сообщений: 17
1

Перевод с Turbo Pascal на PascalABC.NET

04.06.2015, 07:06. Просмотров 1047. Ответов 5
Метки нет (Все метки)


господа, можете помочь? у меня тут программа написана на языке турбо паскаль. пожалуйста переводите ее на язык pascalabc.net

текст программы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses program6;
var
a:real;
p:integer;
begin
b:=2e11;
a:=2e12;
p:=1;
IZma(h);
while b<=a do
begin
F[p]:=n(b);
C[p]:=b;
p:=p+1;
b:=b+h;
end;
Grafik;
end.
текст модуля:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
unit program6;
interface
uses graphabc;
 const
  z=16;
 var
   h,b:real;
   F,C:array[1..500] of real;
   Procedure Izma(var dt:real);
   function n(konsentration:real):real;
   procedure Grafik;
implementation
 
   procedure Izma(var  dt:real);
     begin
       write('enter the change in the concentration');
       read(dt);
     end;
   function n(konsentration:real):real;
     const
      Nd=1e11;
      T=300;
      n1=1.45e10;
      Na=1e11;
     begin
      n:=((Nd-Na)/2+sqrt((sqr((Nd-Na)/2)+sqr(n1))));
      end;
     procedure Grafik;
      const otst=100; R=2; S=6;
      Var Ky,Kx,          {Є®нд.ЇаҐ®Ўа*§®ў**Ёп Ї®«гзҐ**ле §**зҐ*Ё©        ў Є®®а¤Ё**вл}
             dy,dx,          {Ё§¬Ґ*Ґ*ЁҐ Є®®а¤Ё**в Ї® • Ё “}
             dpx,dpy:real;   {Ё§¬Ґ*Ґ*ЁҐ Є®®а¤Ё**вл Ї®¤ЇЁбЁ ®бҐ©}
             GrDriver,       {Ја*дЁзҐбЄЁ© ¤а*©ўҐа}
             grMode:integer; {Ја*дЁзҐбЄЁ© ०Ё¬}
             i,              {ЇҐаҐ¬Ґ***п жЁЄ«*}
             Xkor,Ykor,      {Є®®а¤Ё**вл Ја*дЁЄ*}
             dsy,dsx,        {Є®нд.Ї®бв஥*Ёп бҐвЄЁ}
             Lx,Ly,          {¤«Ё** ®бҐ© • Ё “}
             Xm,Ym:integer;  {¬*ЄбЁ¬*«м*®Ґ §**зҐ*ЁҐ • Ё “}
             tx,ty:string;   {бва®Є®ўлҐ ЇҐаҐ¬Ґ**лҐ}
      begin
        grDriver:=9; grMode:=2;
        InitGraphacb (grDriver,grMode,'E/Doc/kt/my labs/SCHOOL.PAC/BP');
        Xm:=GetMaxX; Ym:=GetMaxY;
        SetBkColor(15);
        SetColor(8);
        Rectangle(Otst,Otst,Xm-Otst,Ym-Otst);
 
        Lx:=Xm-2*Otst;
        Ly:=Ym-2*Otst;
        dsx:=round(Lx/S);
        dsy:=round(Ly/S);
        for i:=1 to S-1 do
        begin
         Moveto (Otst+dsx*i,Otst);
         Lineto (Otst+dsx*i,Ym-Otst);
         Moveto (Otst,Otst+dsy*i);
         Lineto (Xm-Otst,Otst+dsy*i);
        end;
 
        Moveto (Otst,Ym-Otst);
        Setcolor(1);
        Circle(Otst,Ym-Otst,R);
 
        Kx:=Lx/(C[z]-C[1]);
        dx:=h*Kx;
        Ky:=Ly/(F[z]-F[1]);
        For i:=1 to z-1 do
        begin
         dy:=(F[1]-F[i+1])*Ky;
         Xkor:=round(Otst+dx*i);
         Ykor:=round((Ym-Otst)+dy);
         LineTo (Xkor,Ykor);
         Circle (Xkor,Ykor,R);
        end;
 
        dpx:=dsx/Kx;
        dpy:=dsy/Ky;
        SetColor(3);
        for i:=0 to S do
        begin
         str((C[1]+dpx*i):4:0,tx);
         OutTextXY(Otst-20+dsx*i,Ym-Otst+20,tx);
         str((F[1]+dpy*i):10,ty);
         OutTextXY(Otst-90,Ym-Otst-dsy*i,ty);
        end;
 
        SetColor(5);
        OutTextXY(Xm-80,Ym-Otst,'Nd');
        OutTextXY(Otst-20,Otst-20,'n');
      end;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2015, 07:06
Ответы с готовыми решениями:

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

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

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

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

__________________
Помогаю в написании курсовых работ и дипломов здесь.
5
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30873 / 20193 / 7877
Регистрация: 22.10.2011
Сообщений: 35,058
Записей в блоге: 6
04.06.2015, 09:19 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
unit program6;
 
interface
 
uses
  graphabc;
 
const
  z = 16;
 
var
  h, b: real;
  F, C: array[1..500] of real;
 
procedure Izma(var dt: real);
function n(konsentration: real): real;
procedure Grafik;
implementation
 
procedure Izma(var  dt: real);
begin
  write('enter the change in the concentration');
  read(dt);
end;
 
function n(konsentration: real): real;
const
  Nd = 1e11;
  T = 300;
  n1 = 1.45e10;
  Na = 1e11;
begin
  n := ((Nd - Na) / 2 + sqrt((sqr((Nd - Na) / 2) + sqr(n1))));
end;
 
procedure Grafik;
const
  otst = 100; R = 2; S = 6;
var
  Ky, Kx,          {Є®нд.ЇаҐ®Ўа*§®ў**Ёп Ї®«гзҐ**ле §**зҐ*Ё©        ў Є®®а¤Ё**вл}
  dy, dx,          {Ё§¬Ґ*Ґ*ЁҐ Є®®а¤Ё**в Ї® • Ё “}
  dpx, dpy: real;   {Ё§¬Ґ*Ґ*ЁҐ Є®®а¤Ё**вл Ї®¤ЇЁбЁ ®бҐ©}
  // GrDriver,       {Ја*дЁзҐбЄЁ© ¤а*©ўҐа}
  // grMode: integer; {Ја*дЁзҐбЄЁ© ०Ё¬}
  i,              {ЇҐаҐ¬Ґ***п жЁЄ«*}
  Xkor, Ykor,      {Є®®а¤Ё**вл Ја*дЁЄ*}
  dsy, dsx,        {Є®нд.Ї®бв஥*Ёп бҐвЄЁ}
  Lx, Ly,          {¤«Ё** ®бҐ© • Ё “}
  Xm, Ym: integer;  {¬*ЄбЁ¬*«м*®Ґ §**зҐ*ЁҐ • Ё “}
  tx, ty: string;   {бва®Є®ўлҐ ЇҐаҐ¬Ґ**лҐ}
begin
  // grDriver := 9; grMode := 2;
        // InitGraphacb (grDriver,grMode,'E/Doc/kt/my labs/SCHOOL.PAC/BP');
  Xm := WindowWidth{GetMaxX}; Ym := WindowHeight{GetMaxY};
        // SetBkColor(15);
  SetPenColor(clDarkGray); // SetColor(8);
  Rectangle(Otst, Otst, Xm - Otst, Ym - Otst);
  
  Lx := Xm - 2 * Otst;
  Ly := Ym - 2 * Otst;
  dsx := round(Lx / S);
  dsy := round(Ly / S);
  for i := 1 to S - 1 do
  begin
    Moveto(Otst + dsx * i, Otst);
    Lineto(Otst + dsx * i, Ym - Otst);
    Moveto(Otst, Otst + dsy * i);
    Lineto(Xm - Otst, Otst + dsy * i);
  end;
  
  Moveto(Otst, Ym - Otst);
  SetPenColor(clBlue); // Setcolor(1);
  Circle(Otst, Ym - Otst, R);
  
  Kx := Lx / (C[z] - C[1]);
  dx := h * Kx;
  Ky := Ly / (F[z] - F[1]);
  for i := 1 to z - 1 do
  begin
    dy := (F[1] - F[i + 1]) * Ky;
    Xkor := round(Otst + dx * i);
    Ykor := round((Ym - Otst) + dy);
    LineTo(Xkor, Ykor);
    Circle(Xkor, Ykor, R);
  end;
  
  dpx := dsx / Kx;
  dpy := dsy / Ky;
  SetPenColor(clCyan); // SetColor(3);
  for i := 0 to S do
  begin
    str((C[1] + dpx * i):4:0, tx);
    {OutTextXY}TextOut(Otst - 20 + dsx * i, Ym - Otst + 20, tx);
    str((F[1] + dpy * i):10, ty);
    {OutTextXY}TextOut(Otst - 90, Ym - Otst - dsy * i, ty);
  end;
  
  SetPenColor(clMagenta); // SetColor(5);
  {OutTextXY}TextOut(Xm - 80, Ym - Otst, 'Nd');
  {OutTextXY}TextOut(Otst - 20, Otst - 20, 'n');
end;
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses
  program6;
 
var
  a: real;
  p: integer;
 
begin
  b := 2e11;
  a := 2e12;
  p := 1;
  IZma(h);
  while b <= a do
  begin
    F[p] := n(b);
    C[p] := b;
    p := p + 1;
    b := b + h;
  end;
  Grafik;
end.
, только работать эта программа не будет, ибо в функции N результат не зависит от параметра, следовательно все элементы массива F одинаковы, один из коэффициентов равен 0, и при делении на него получаешь NaN. Всё, приплыли. Исправляй функцию.
0
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 13
04.06.2015, 09:40 3
Наверное глупый вопрос, а там не все равно? Когда я учил паскаль, одинаковый код компилировался и выводил то что надо и в Turbo Pascal и в ABC. Давно было уже не помню.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30873 / 20193 / 7877
Регистрация: 22.10.2011
Сообщений: 35,058
Записей в блоге: 6
04.06.2015, 09:43 4
Может и все равно. Но этот код и в Турбо-Паскале не работает. Деление на 0 запрещено в любом случае ,независимо от языка или компилятора.
0
0 / 0 / 2
Регистрация: 11.05.2015
Сообщений: 17
04.06.2015, 11:10  [ТС] 5
Можете сказать, где именно делится на ноль и как её исправить
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30873 / 20193 / 7877
Регистрация: 22.10.2011
Сообщений: 35,058
Записей в блоге: 6
04.06.2015, 11:12 6
Я написал, как исправить. Написать функцию N так, чтобы она хоть как-то зависела от аргумента, и весь массив F не был бы заполнен одинаковыми значениями. А поскольку там на данный момент все значения одинаковы - то в 77 строке модуля происходит деление на 0.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2015, 11:12

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

Перевод из turbo pascal в abc.net
Помогите адаптировать программу для abc.net из turbo pascal Program transportnaj_zadatsha;...

Перевести код программы с Turbo Pascal в PascalABC
Помогите. Срочно необходимо. Буду очень признателен Uses Graph,Crt; const MaxShar=10; type...

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться....

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program...


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

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

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