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

Из Turbo Pascal в PascalABC.NET

24.03.2014, 12:40. Просмотров 2281. Ответов 5
Метки нет (Все метки)


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

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
const maxn = 10000;
type longint = integer;
var n: integer;
    i, j: integer;
    o, l, r, mx: longint;
    mas: array [1..maxn] of longint;
    k, up: array [1..maxn] of longint;
procedure Sort(ll, rr: word);
var
  ii, jj, xx, yy: word;
begin
  ii := ll; jj := rr; xx := mas[(ll+rr) DIV 2];
  repeat
    while mas[ii] < xx do ii := ii + 1;
    while xx < mas[jj] do jj := jj - 1;
    if ii <= jj then
    begin
      yy := mas[ii]; mas[ii] := mas[jj]; mas[jj] := yy;
      yy := up[ii]; up[ii] := up[jj]; up[jj] :=yy;
      ii := ii + 1; jj := jj - 1;
    end;
  until ii > jj;
  if ll < jj then Sort(ll, jj);
  if ii < rr then Sort(ii, rr);
end;
 
begin
     assign(input, 'input.txt'); reset(input);
     assign(output, 'output.txt'); rewrite(output);
     read(n);
     for i:=1 to n do
     begin
          read(mas[i]);
          up[i]:=i;
     end;
     sort(1, n);
     fillchar(k, sizeof(k), 0);
     for i:=1 to n do
      for j:=i+1 to n do
begin
            mx:=longint(mas[i])+mas[j];
       if mx>mas[n] then break;
                l:=j+1;
                r:=n;
                o:=1; if mx>mas[l] then
                while l<r-1 do
                begin
                     o:=(l+r+1) div 2;
                     if mas[o]<mx then l:=o else r:=o;
                end;
                if mas[l]<>mx then l:=r;
                while mas[l]=mx do
                begin
                     inc(k[up[l]]); inc(l);
                end;
           end;
           for i:=1 to n do
                writeln(k[i]);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2014, 12:40
Ответы с готовыми решениями:

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

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

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

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

5
Программист
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 683
Записей в блоге: 5
24.03.2014, 12:58 2
Вместо fillchar(k, sizeof(k), 0); так:
Pascal
1
2
for i:=1 to maxn do
       k[i]:=0;
Ну и эту строчку я бы убрал: type longint = integer;
1
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 31
24.03.2014, 13:01  [ТС] 3
Если б работало, проблем бы не было. Останавливается на строке
Pascal
1
fillchar(k, sizeof(k), 0);
Неизвестное имя 'fillchar'


ПС
Попробую.

Следующая ошибка

Pascal
1
assign(input, 'input.txt'); reset(input);
Ошибка времени выполнения: Файл 'C:\Users\input.txt' не найден.
Что за файл он требует?
0
Программист
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 683
Записей в блоге: 5
24.03.2014, 13:08 4
Файл с исходными данными. Что тут непонятного? Бери Блокнот и создавай файл.
1
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 31
24.03.2014, 13:10  [ТС] 5
Спасибо. Этот файл и не нужен был, все вводится с клавиатуры. Просто убрал эти строки и все заработало.
0
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 31
25.03.2014, 13:56  [ТС] 6
Все-таки не все гладко оказалось с этим кодом (подправил его как посоветовали). На некоторых тестах "Превышено максимальное время работы". На выполнение уходит 5 сек вместо 1. Задача вот эта http://informatics.mccme.ru/mo... terid=1664

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
const
      maxn = 10000;
    var
      n: integer;
      i, j: integer;
      o, l, r, mx: longint;
      mas: array [1..maxn] of longint;
      k, up: array [1..maxn] of longint;
     
    procedure Sort(l, r: word);
    var
      i, j, x, y: word;
    begin
      i := l; j := r; x := mas[(l + r) DIV 2];
      repeat
        while mas[i] < x do i := i + 1;
        while x < mas[j] do j := j - 1;
        if i <= j then
        begin
          y := mas[i]; mas[i] := mas[j]; mas[j] := y;
          y := up[i]; up[i] := up[j]; up[j] := y;
          i := i + 1; j := j - 1;
        end;
      until i > j;
      if l < j then Sort(l, j);
      if i < r then Sort(i, r);
    end;
    begin
      read(n);
      for i := 1 to n do
      begin
        read(mas[i]);
        up[i] := i;
      end;
      sort(1, n);
      for i := 1 to maxn do
        k[i] := 0;
      for i := 1 to n do
        for j := i + 1 to n do
        begin
          mx := longint(mas[i]) + mas[j];
          if mx > mas[n] then break;
          l := j + 1;
          r := n;
          o := 1; if mx > mas[l] then
            while l < r - 1 do
            begin
              o := (l + r + 1) div 2;
              if mas[o] < mx then l := o else r := o;
            end;
          if mas[l] <> mx then l := r;
          while mas[l] = mx do
          begin
            inc(k[up[l]]); inc(l);
          end;
        end;
      for i := 1 to n do
        write(k[i],' ');
    end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2014, 13:56

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

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

Можно как-то переделать код из Turbo Pascal чтобы он работал в pascal abc.net?
Сделайте пожалуйста, я просто не вникаю uses Graph, Crt; var grDriver: integer; grMode:...

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

Нужно переделать программу,написанную на Turbo Pascal в ту,чтобы работала на Pascal ABC.NET пожалуйста
program lab2; uses Crt; const Nmax = 15; { MAX element mnozestva A } type T =...


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

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

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