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

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

Войти
Регистрация
Восстановить пароль
 
Manson13
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 25
#1

Стеки, где-то косяк - C++

23.12.2010, 17:56. Просмотров 214. Ответов 0
Метки нет (Все метки)

В текстовом файле записан текст, сбалансированный по круглым скобкам. Написать программу, которая для каждой открывающей и, соответственно, закрывающей пары скобок печатает номера их позиций в тексте, упорядочив пары в порядке возрастания номеров позиций закрывающих скобок. Например: для текста a+(45-f(x)*(b-с)) надо напечатать 8, 10; 12, 16; 3, 17.
Она работает...но выводит лишние значения и нормально не завершается, вылетает.
Исправьте пожалуйста)
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
93
94
95
96
97
98
99
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <stdio.h>
#include <string.h>
 
struct stek
{
    int data;
    struct stek *next;
};
 
stek *vstek (stek *ns, int x)
{
    stek *tmp1;
    tmp1 = new struct stek;
    tmp1 -> data = x;
    tmp1 -> next = ns;
    ns = tmp1;
    return ns;
}
 
stek *izsteka (stek *ns)
{
    struct stek *tmp1;
    tmp1 = ns;
    if (ns == NULL)
        cout << "stek pust";
    else
    {
    //  cout << tmp1 -> data;
        ns = tmp1 -> next;
        delete tmp1;
    }
    return ns;
}
void main ()
{
int i,j,n,a,m,chislo;
char *msg;
stek *ns;
int massiv[10];
FILE *f;
j = 0;
m = 0;
clrscr();
f = fopen("f2.dat", "r");
while (!feof(f))
{  
    fgets(msg,255,f);
    for (i=0;i<strlen(msg);i++)
    {       
    if (msg[i] == ')')
        {   
        m = i;
        a = 0;
        for (i=0;i<strlen(msg);i++)
        {
            if (msg[i] == '(' && i < m)
            a = i + 1;  
                
        }   
        for (j = 0; j < n; j++)
        {
            if (massiv [j] == a)
            {
            a = 0;
                for (i=0;i<strlen(msg);i++)
                {
                    if (msg[i] == '(')
                    {
                        if (a == 0)
                            a = i + 1;
                    }
                }
            }
        }
        i = m;
        massiv [j] = a;
        //ns=vstek (ns, a);
        massiv [j + 1] = i + 1;
        //ns=vstek (ns, i + 1);
        j = j + 2;
        n = j;
        }       
    }   
}   
for (j = n - 1; j > -1; j--)    
{   
    chislo = massiv [j];
    ns=vstek (ns, chislo);
}
while (ns!=NULL)
    {
    cout << ns->data<< " , " ;
    ns=izsteka (ns);
    }
getch();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2010, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стеки, где-то косяк (C++):

Где косяк? - C++
Имеется задача... #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; int main() ...

Где косяк в коде? - C++
Вообщем нужно к матрице коэффициентов системы линейных уравнений дописать справа столбец свободных членов. Написал код. На маленьких...

Где косяк в коде и как исправить? - C++
#include &lt;iostream&gt; using namespace std; int main() { setlocale (LC_CTYPE, &quot;Russian&quot;); cout &lt;&lt; &quot;Введите числа нажимая...

Объясните где я косяк (switch case + char) - C++
Доброе время суток! Имеется: for (unsigned int i=0; i&lt;v.size(); ++i) { cout &lt;&lt;&quot;# &quot;&lt;&lt;v.number &lt;&lt;&quot; \t&quot; ...

Некорректно выводит массив,немогу понять где косяк - C++
#include&lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale (LC_ALL,&quot;.ACP&quot;); int i,j,n; int...

Совершенные числа(косяк) - C++
Добрый день! Возникла проблема с вывод совершенных чисел в интервале от m до n. Почему-то вообще не выводит, хотя проверял похожий...

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

Косяк в определении структуры - C++
struct LodedModuleDescriptor{ DWORD nameHash; HMODULE hDll; }; struct LoadedModules{ int count; int arraySize; struct...

Исправить косяк в программе - C++
Ребят, есть программа, работающая с текстовым файлом (потоковый ввод-вывод). Если в файле имеется один символ (корректный-цифра), программа...

Косяк с мышью в консольном режиме - C++
Для более удобной работы в программе необходимо исспользование мышь. Нашел темки, как описать, все ясно и понятно. Разобрался. Прописал....

Маленький косяк с шаблоном класса - C++
Задание: Разработать шаблонный класс для работы с очередью. Должны быть реализованы операции включения и выборки значений из очереди....


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

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

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