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

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

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

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

13.04.2011, 23:37. Просмотров 487. Ответов 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.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2011, 23:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из турбо паскаля в С++ перевести код - стек (C++):

перевести с турбо паскаля в с++ вид - C++
type konf=record name: string; cena:integer; god:integer; mag:integer; end; var kon: array of konf; I,k,max:...

Перевести код с Паскаля на С++ - C++
Фирме принадлежат два магазина. Известна стоимость товаров, проданных в каждом магазине за каждый день в июле и августе, которая хранится в...

Перевести код с Паскаля на Си++ - C++
Добрый всем день! Будьте добры, перепишете пожалуйста данную программу из паскаля на си++. Буду очень благодарен. Я сам Паскаль не знаю....

Перевести код с Паскаля на С++ - C++
Program proga; uses crt; Type gostinica= record FIO:string; nomer:integer; cena:integer; kolvo:integer; itogo: integer; ...

Перевести код с паскаля на C++ - C++
По заданному натуральному числу N необходимо вычислить количество натуральных чисел, которые являются делителями N! (факториала числа N). ...

Перевести код из Паскаля в Си++ - C++
Переведите пожалуйста из Паскаля в Си++, кому не сложно.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2011, 23:37
Привет! Вот еще темы с ответами:

Перевести код из Паскаля в С++ - C++
Помогите, пожалуйста перевести в с++ uses crt; const nmax=20; var a:array of integer; n,m,i,j,k:byte; s,x:integer; ...

Перевести код паскаля в с++ - C++
Нужно перевести данный код паскаля в с++. Задание: Найти в строке все заданные последовательности символов и заменить их другой...

Перевести код программы Паскаля в код С++ - C++
В массиве Х (15) найти произведение и количество элементов расположенных между наибольшими и наименьшими элементами кто может перевести...

Необходимо перевести код с паскаля на С++ - C++
const n=5; var a: array of integer; i,j,sum: integer; begin randomize; writeln('Матрица:'); for i:=1 to n do ...


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

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

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