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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Новенький
44 / 9 / 2
Регистрация: 03.03.2009
Сообщений: 254
#1

Код Pascal на С - C++

26.04.2009, 21:07. Просмотров 717. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2009, 21:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Код Pascal на С (C++):

Код из Pascal в С - C++
Помогите перевести код из паскаля в си: uses crt; const n=500; var i,j,m,a,b,p1,p2,k:integer; begin for i:=2 to n do ...

Перевести код из Pascal на С++ - C++
Перевести код из Pascal на С++: Uses crt; Type book=Record fam: String; pred: String; st: Byte; nagr: Byte; ...

Перевести код Pascal на C++ - C++
Program PROGRAMMA6; uses dos, crt, graph; Const N=110; M=90; s=13; r=6; h=5; Var y, yy, u : array of integer; ...

Перевести код с Pascal в С++ - C++
Program fun1; Var m: integer; a,b,h,x,y : real; begin read (a,b,m); Writeln ('Таблиця:'); h:=(b-a)/m; x:=a; ...

Перевести код с Pascal - C++
первая: program lab2; uses crt; label M1; var n:integer; begin clrscr; M1:writeln('Введите целое число n от1 до 5'); ...

Перевести код из Pascal в C++ - C++
Помогите пожалуйста. begin for i := 1 to n do begin P :=i; C := 1 ; PR:=истина; end; C := 0; write(P,...,P); i := 1; ...

1
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
27.04.2009, 03:52 #2
Лучше объясните смысл задачи. Меня просто бесит куча переменных в одном месте.
Потом я хоть паскаль и плохо знаю , но где объявлено input ,output;
seekeof - что это? Дальше и смотреть не буду.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2009, 03:52
Привет! Вот еще темы с ответами:

Перевести код с Pascal - C++
program sro3_2; var A,B,C:array of integer; n,k,l,i:integer; ...

Перевести код с Pascal - C++
пожалуйста помогите перевести код с паскаля в с++ uses crt; var N,M:longint; k:byte; begin clrscr; write('N=');readln(n); ...

Перевести код с Pascal на C# и C++ - C++
Помогите переписать прогу с одного языка на другой. Вот Pascal const maxn = 150; var w: array of byte; link, lx, ly:...

Перевести код с Pascal - C++
var a,b,c:real; begin clrscr; writeln('Vvedite A='); readln(a); writeln('Vvedite B='); readln(b); If a&gt;b...


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

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

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