Форум программистов, компьютерный форум CyberForum.ru

Код Pascal на С - C++

Восстановить пароль Регистрация
 
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
26.04.2009, 21:07     Код Pascal на С #1
Помогите плииз надо перевести код с паскаль на си
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
uses
  SysUtils;
 
const
  base = 10;
 
type
  int = longint;
 
var
  n, k, i, len, j, z, x : int;
  s, t, ans, s1, w, m: string;
  intpart, rest: int;
  period, per: int;
  were: array[0..9] of int;
  first, zero, minim: boolean;
  a,b:array[0..10000]of string;
  ch:char;
 
begin
  reset(input, 'input.txt');
  rewrite(output, 'output.txt');
while not seekeof do begin
  read(n, k);
  s := '.';
  intpart := n div k;
  while (intpart > 0) do
  begin
    s := inttostr(intpart mod base) + s;
    intpart := intpart div base;
  end;
  if (s = '.') then
    s := '0.';
  rest := n mod k;
  i := 0;
  period := 0;
  fillchar(were, sizeof(were), 0);
  while (rest > 0) do
  begin
    inc(i);
    if (were[rest] > 0) then
    begin
      period := i - were[rest];
      break;
    end;
    were[rest] := i;
    rest := rest * base;
    s := s + inttostr(rest div k);
    rest := rest mod k;
  end;
  first := true;
  ans:=ans+inttostr(n)+'=';
  repeat
    zero := true;
    t := '';
    for i := 1 to length(s) do
    begin
      if (s[i] in ['1'..'9']) then
      begin
        t := t + inttostr(k);
        dec(s[i]);
        zero := false;
      end
      else
        t := t + s[i];
    end;
    if zero then
      break;
    if first then
      first := false
    else
      ans:=ans+'+';
    while (s[1] = '0') and (s[2] <> '.') do
      s := copy(s, 2, length(s));
    while (t[1] = '0') and (t[2] <> '.') do
      t := copy(t, 2, length(t));
    if (period > 0) then
    begin
      minim := false;
      for per := 1 to period div 2 do if (period mod per = 0) then
      begin
        minim := true;
        for i := length(t) downto length(t) - period + per + 1 do
        begin
          if (t[i] <> t[i - per]) then
          begin
            minim := false;
            break;
          end;
        end;
        if minim then
        begin
          setlength(t, length(t) - period + per);
          break;
        end;
      end;
      if not minim then
        per := period;
      while (t[length(t) - per] = t[length(t)]) do
        setlength(t, length(t) - 1);
      if (per > 1) or (t[length(t)] <> '0') then
      begin
        ans:=ans+copy(t, 1, length(t) - per)+'('+copy(t, length(t) - per + 1, length(t))+ ')';
        continue;
      end;
      setlength(t, length(t) - per);
    end;
    while (t[length(t)] = '0') do
      setlength(t, length(t) - 1);
    if (t[length(t)] = '.') then
      setlength(t, length(t) - 1);
    ans:=ans+t;
  until false;
 end;
 len:=1;
  while ans[z]<>'=' do inc(z);
   while z<>length(ans) do
    begin
     inc(z);
     if ans[z] in ['0'..'9','(',')','.'] then a[len]:=a[len]+ans[z] else inc(len);
    end;
    for i:=1 to len do
     b[i]:=a[i];
    for i:=1 to len do
     for j:=1 to length(a[i]) do
      begin
       if a[i][j]='(' then begin
        x:=j-1;delete(a[i],j,1);
         while a[i][x]<>')' do
          begin
           inc(x);
            if a[i][x]=')' then break;
            m:=m+a[i][x];
          end;
           delete(a[i],x,1);
          for x:=length(a[i]) to 6 do a[i]:=a[i]+m;
        end;
      end;
     for i:=1 to len do
      for j:=i+1 to len do
       if a[i]>a[j] then begin w:=a[i];a[i]:=a[j];a[j]:=w;w:=b[i];b[i]:=b[j];b[j]:=w;end;
       write(n,'=');
     for i:=1 to len-1 do
      write(b[i],'+');
     write(b[len]);
end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2009, 21:07     Код Pascal на С
Посмотрите здесь:

C++ Код из Pascal в С
C++ Перевести код из Pascal на C++
C++ Перевести код с Pascal
C++ Перевести код с Pascal
Перевести код с Pascal C++
C++ Перевести код с Pascal
C++ Из кода Pascal в код C++
Перевести код с Pascal C++
Перевести код с C++ в Pascal C++
Перевести код из Pascal в С++ C++
C++ Переделать код с Pascal на С++
C++ Перевести код с Pascal на C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
27.04.2009, 03:52     Код Pascal на С #2
Лучше объясните смысл задачи. Меня просто бесит куча переменных в одном месте.
Потом я хоть паскаль и плохо знаю , но где объявлено input ,output;
seekeof - что это? Дальше и смотреть не буду.
Yandex
Объявления
27.04.2009, 03:52     Код Pascal на С
Ответ Создать тему
Опции темы

Текущее время: 22:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru