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

Код Pascal на С - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вызов функции из класса http://www.cyberforum.ru/cpp-beginners/thread31643.html
есть функция объявленная в классе Calendar void calendar::menu_k() { cout<<"\n\n"; set_color(cGREEN); cout<<"МЕНЮ"<<endl; cout<<"-------------------"<<endl; cout<<"Другой месяц ...
C++ Поправьте пожалуйста код Выясните, какая из букв первая или последняя встречается в заданном слове чаще. #include <iostream.h> #include <string.h> #include <conio.h> void main() { char s; http://www.cyberforum.ru/cpp-beginners/thread31631.html
Поправьте пожалуйста код ... C++
Вычислите длину самого короткого слова в предложении из трёх слов, разделённых пробелами. #include <iostream.h> #include <string.h> #include <conio.h> void main() { char s;
C++ Определить номера строк матрицы, все элементы которых являются простыми числами
Дано: прямоугольная матрица A. Определить номера строк все элементы которых являются простыми числами. Проверку каждой строки на соответсвие заданному условию оформить как функцию
C++ C++ игра в карты http://www.cyberforum.ru/cpp-beginners/thread31582.html
Здравствуйте, помогите решить задачу реализующую игру в карты, в "дурака" с компьютером. В начале сдается по 6 карт и определяется козырная масть, первым ходит тот у кого меньшая козырная карта....
C++ Работа с файлами Есть текстовый файл с кодом программы...Нужно сделать так, чтобы первые буквы служебных слов сделались заглавными. Не могу понять как это сделать... Спасибо! подробнее

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

Код Pascal на С - C++

26.04.2009, 21:07. Просмотров 713. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru