Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
sasha1919
0 / 0 / 0
Регистрация: 10.07.2017
Сообщений: 3
1

Необходимо перевести прогу из Паскаля в С++

11.07.2017, 22:14. Просмотров 724. Ответов 1
Метки нет (Все метки)

var
n, i, j, sch: longint;
fl: boolean;
a, b: string;
h, g: array[0..5555] of longint;


procedure del_pair(i: longint);
begin
b[i] := '#';
b[h[i]] := '#';
a[i] := a[i-1];
a[h[i]] := a[h[i]+1];
end;



begin


readln(a);

n := length(a);

a := '#' + a + '#';

b := a;

sch := 0;

for i := 2 to n + 1 do
if a[i] = '(' then
begin
inc(sch);
g[sch] := i;
end
else
if a[i] = ')' then
begin
h[g[sch]] := i;
dec(sch);
end;


for i := 2 to n + 1 do
if a[i] = '(' then
begin
if ((a[i+1] = '(') and (h[i+1] = h[i] - 1)) or (i + 2 = h[i]) then
begin
del_pair(i);
continue;
end;

if a[i-1] = '!' then continue;

if ((a[i-1]='v')or(a[i-1]='#')or(a[i-1]='('))and((a[h[i]+1]<>'^')and(a[h[i]+1]<>'!')) then
begin
del_pair(i);
continue;
end;

fl := true;
sch := 0;

for j := i + 1 to h[i] - 1 do
if (a[j] = 'v') and (sch = 0) then
begin
fl := false;
break;
end
else
if a[j] = '(' then inc(sch)
else
if a[j] = ')' then dec(sch);
if fl then
begin
del_pair(i);
continue;
end;

end;



for i := 2 to n + 1 do
if b[i] <> '#' then write(b[i]);
writeln;

readln;

end.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2017, 22:14
Ответы с готовыми решениями:

Необходимо перевести из паскаля в с++
Имеется программа на Паскале: uses crt; var a: array of string; i,j,k,l: byte; s,sl:...

Необходимо перевести код с паскаля на С++
const n=5; var a: array of integer; i,j,sum: integer; begin randomize; ...

Переделать прогу с паскаля в Вижуал
вот прога на Паскале, надо переделать под вижуал... срочно... ...

Переписал прогу с паскаля на С++.Где ошибка?
На паскале код запускатеся,работает,на Си нет. program perevod_in_10; {перевод в 10-ую целых...

Перевести прогу на C++
Помогите перевести программу с Pascal на Си uses crt; var a: array of byte; i, j, n, x,...

1
Sh@dow777
16 / 16 / 6
Регистрация: 10.12.2013
Сообщений: 733
12.07.2017, 06:51 2
Лучший ответ Сообщение было отмечено sasha1919 как решение

Решение

sasha1919,
C++
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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
void del_pair(long int num, string &str1, string &str2, long int *arr)
{
    str1[num] = '#';
    str1[arr[num]] = '#';
    str2[num] = str2[num - 1];
    str2[arr[num]] = str2[arr[num] + 1];
}
 
int main()
{
    long int n, i, j, sch;
    bool fl;
    string a, b;
    long int h[5556], g[5556];
 
    getline(cin, a);
 
    n = a.length();
 
    a = '#' + a + '#';
    b = a;
 
    sch = 0;
 
    for(i = 0;i < 5556;i++)
    {
        h[i] = 0;
        g[i] = 0;
    }
 
    for(i = 1;i < (n + 1);i++)
    {
        if(a[i] == '(')
        {
            sch++;
            g[sch] = i;
        }
        else if(a[i] == ')')
        {
            h[g[sch]] = i;
            sch--;
        }
    }
 
    for(i = 1;i < (n + 1);i++)
    {
        if(a[i] == '(')
        {
            if(((a[i + 1] == '(') && (h[i + 1] == (h[i] - 1))) || ((i + 2) == h[i]))
            {
                del_pair(i, b, a, h);
            }
 
            if(a[i - 1] == '!')
                continue;
 
            if(((a[i - 1] == 'v') || (a[i - 1] == '#') || (a[i - 1] == '(')) && ((a[h[i] + 1] != '^') && (a[h[i] + 1] != '!')))
                del_pair(i, b, a, h);
 
            fl = true;
            sch = 0;
 
            for(j = (i + 1);j <= (h[i] - 1);j++)
            {
                if((a[j] == 'v') && (sch == 0))
                {
                    fl = false;
                    break;
                }
                else if(a[j] == '(')
                    sch++;
                else if(a[j] == ')')
                    sch--;
 
                if(fl)
                    del_pair(i, b, a, h);
            }
        }
    }
 
    for(i = 1;i < (n + 1);i++)
        if((b[i] != '#'))
            cout << b[i] << endl;
 
    system("pause");
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2017, 06:51

Перевести с Паскаля на С++
Здравствуйте! Можете помочь, мне надо перевести код с Паскаля на С++ (код паскаля на фото). Вот...

Перевести из паскаля в C++
Перегнать из паскаля в C++. Заранее благодарю. условие: Вводится последовательность...

Перевести из паскаля в с++
var a, i, b: integer; begin read(a); b := 0; for i := 1 to a do if a mod i = 0...


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

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

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