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

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

Войти
Регистрация
Восстановить пароль
 
Нотка
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 18
#1

Из турбо паскаля в С++ перевести код - стек - C++

13.04.2011, 23:37. Просмотров 483. Ответов 0
Метки нет (Все метки)

Задача написана на Турбо паскале. Проблема состоит в том, что она должны быть на С++. К сожалению, на данный момент это не представляется возможным сделать самой. Очень прошу помочь.

Использовать стек для решения следующей задачи. В текстовом файле записана без ошибок формула следующего вида:

<формула>:=<цифра>|M(<формула>,<формула>)| m(<формула>,<формула>)
<цифра>:=0|1|2|3|4|5|6|7|8|9


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
program StackSample;
type
  FileType= File of Char;
var
  Source: FileType;
function formula( var t: FileType ): integer;
type
  TypeOfElem= Char;
  Assoc= ^ElementOfStack;
  ElementOfStack= record
    Elem: TypeOfElem;
    NextElem: Pointer
  end;
  Stack= Assoc;
var
  S: Stack;
  c, op, x, y: char;
procedure CreateStack ( var StackHead: Stack);
begin
  StackHead:= nil
end;
function StackIsClear( var StackHead: Stack ): Boolean;
begin
  StackIsClear:= ( StackHead= nil )
end;
procedure IncludeInStack( var StackHead: Stack; NewElem: TypeOfElem );
var
  ServiceVar: Stack;
begin
  {создание нового элемента}
  new( ServiceVar );
  ServiceVar^.Elem:= NewElem;
  {созданный элемент сделать вершиной стека}
  ServiceVar^.NextElem:= StackHead;
  StackHead:= ServiceVar
end;
procedure SelectFromStack( var StackHead: Stack; var Result: TypeOfElem );
var
  ServiceVar: Assoc;
begin
  if StackHead <> nil then begin
    {выбор элемента из вершины}
    Result:= StackHead^.Elem;
    {запоминание ссылки на старую вершину}
    ServiceVar:= StackHead;
    {исключение из стека и уничтожение элемента}
    StackHead:= StackHead^.NextElem;
    dispose( ServiceVar )
  end
end;
begin
  reset( t );
  CreateStack( S );
  while not eof( t ) do begin
    read(t, c);
    {обработка очередной литеры текста (литеры в•љ(в•© и в•љ,в•© игнорируются)}
    if c in ['0'..'9','M','m'] then IncludeInStack( S, c)
      else
        if c= ')' then begin    {конец формулы вида p(x, y)}
        {в конце стека находится тройка op x y, она удаляется
из стека, выполняется операция op и результат
         записывается в стек}
          SelectFromStack( S, y );
          SelectFromStack( S, x );
          SelectFromStack( S, op );
          case op of
            'M'{max}: if x > y then c:= x else c:= y;
            'm'{min}: if x < y then c:= x else c:= y
          end;
          IncludeInStack( S, c )
        end
  end; {of while}
  {в стеке осталась одна цифра в€љ значение всей формулы; цифра переводится в целое число}
  SelectFromStack( S, c );
  formula:= ord( c ) - ord( '0' )
end;
begin
  assign( Source, 'c:tempsource.txt' );
  writeln( Formula( Source ) );
end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2011, 23:37     Из турбо паскаля в С++ перевести код - стек
Посмотрите здесь:

Перевод кода из Турбо паскаля в С++ C++
C++ переделать из турбо паскаля в Cи
C++ Перевести код с Паскаля на С++
C++ Перевести код паскаля в с++
C++ Перевести код с паскаля на C++
C++ Перевести код из Паскаля в С++
перевести небольшой код с паскаля на с C++
C++ Перевести код с Паскаля на С++
Необходимо перевести код с паскаля на С++ C++
Перевести код из Паскаля в Си++ C++
Перевести код с Паскаля на Си++ C++
перевести с турбо паскаля в с++ вид C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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