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

Помогите с задачей про списки. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ игра в консоле, с очередью и коллизиями http://www.cyberforum.ru/cpp-beginners/thread379323.html
Здравствуйте, разрабатываю проектик небольшой, задали по программированию. В общем делаю игру с управлением одним корабликом и отстрелом налетающих вражеских, обычный древний симулятор. Столкнулся с проблемой обработки коллизий ( пересечений), до этого делал графику прямым выводом и не запоминал ее расположение, попарился с сортировками и рассчетом расстояний- все получается за квадраты от N,...
C++ Использование функции MessageBoxA Решил после Delphi перейти на C++, сразу появилось сотня проблем, сначало пол часа пытался объявить переменную String, оказалось что первая буква должна быть на нижнем регистре и нужно в using подключать std... Или объявлять как std::string в общем проблема с объявлением решена, теперь пытаюсь вывести месагу используя MessageBoxA (Оказалось что просто MessageBox как в Delphi тут нет, но это одно... http://www.cyberforum.ru/cpp-beginners/thread379320.html
Воспроизвести звуковой файл (ручками) C++
Возможно ли это? если да, то как?
C++ Реализация протокола MS CHAP
Есть задача. Реализовать алгоритм шифрования MS CHAP. почитал что это вообще такое подробно (после заголовка Аутентификация снаружи и изнутри) http://www.insidepro.com/kk/100/100r.shtml 1. Клиент посылает запрос на аутентификацию VPN серверу, открыто передавая свой login; 2. Сервер возвращает 8-байтовый случайный отклик; 3. Клиент снимает со своего пароля LM-хэш и генерирует три...
C++ Дано двузначное число. Вывести вначале его левую цифру, а затем — его правую цифру http://www.cyberforum.ru/cpp-beginners/thread379293.html
1)Дано двузначное число. Вывести вначале его левую цифру (десятки),а затем — его правую цифру (единицы). Для нахождения десятков использовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления.
C++ Вычислить максимальный по модулю элемент массива Заполнить случайными числами от -5 до 5. В одномерном массиве, состоящем из 10 целых элементов вычислить: а)максимальный по модулю элемент массива; б)сумму элементов массива расположенных между первым и вторым положительными элементами. Преобразовать массив так чтобы все элементы равные 0 распологались после всех остальных под буквой а, более или менее получилось сделать, но вот... подробнее

Показать сообщение отдельно
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352

Помогите с задачей про списки. - C++

07.11.2011, 20:24. Просмотров 429. Ответов 5
Метки (Все метки)

Здравствуйте!) У меня есть список, в котором находится строка, например, "ab(cd)". Мне нужно, чтобы в этому списке парные скобки(то есть левая и парная ей правая заменялись на пробелы). А если в строке есть только левая или правая, то заменять ничего не надо, выводить строку так, как она есть. У меня не получается это сделать...либо заменяю на пробел только левую, либо только правую( Помогите пожалуйста! Спасибо!
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
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
147
148
149
150
151
152
153
154
// Списки и структуры.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include "H1.h"
using namespace std;
 
/*
struct Node
{
    char a;
    int d;
    Node *next;
    Node *prev;
 
};
 
Node * first(char a);
void add(Node **pend, char a);
Node * find(Node * const pbeg, int i);
bool remove(Node **pbeg, Node **pend, int key);
Node * incert(Node * const pbeg, Node **pend, int key, char a);
*/
 
int _tmain(int argc, _TCHAR* argv[])
{
    Node *pbeg = first('a'); // Формирование первого элемента списка
    Node *pend = pbeg; // Список заканчивается, едва начавшись
    // Добавление в конец списка четырех элементов 2, 3. 4. и 5:
    int size;
    int ind;
    int scob=0;
    char Form[]={"b(cd)"};
    size=strlen(Form);
    for (int i = 0; i<size; i++)
    {
        add(&pend,Form[i]);
        if (Form[i]=='(')
        {       
            /*
            for (int h=i;h<size;h++)
            {
                if (Form[h]==')')
                {
                    
                    Form[h]=' ';
                    Form[i]=' ';
                    break;
                }   
        
            }
            */
            scob++;
            ind=i;
            
        }
        if (Form[i]==')')
        {
            scob--;
            ind=i;
        }   
    }
    Node *pv = pbeg;
    Node *pk;       
    //((pv->next)->a)!=')'
    while (pv)
    {
        if(pv->a=='(')
        {           
            while (pv)
            {           
                if (pv->a==')')
                {
                    pv->a=' ';              
                    break;
                }
                pv = pv->next;
 
            }
        }
        pv = pv->next;
        /*
        if(pv->a==')')
        {
            //pk=pv->next;
            pv->a=' ';
        }*/     
    }
    while (pv)
    {
        // вывод списка на экран
        cout << pv->a;
        pv = pv->next;
 
    }
    
    cout <<endl;
    /*/////Ckobish
    
    int size;
    int ind;
    int scob=0;
    char Form[]={"(fg)((gfh))"};
    size=strlen(Form);
    for (int i = 0; i<size; i++)
    {
        
        if (Form[i]=='(')
        {   
            for (int h=i;h<size;h++)
            {
                if (Form[h]==')')
                {
                    Form[i]=' ';
                    Form[h]=' ';
                    break;
                }   
 
        
            }
            
            scob++;
            ind=i;
        }
        if (Form[i]==')')
        {
            scob--;
            ind=i;
        }   
    }
 
    for (int i=0; i<size;i++)
    {
        cout <<Form[i]<<" ";
 
    }
    */
 
    //incert(pbeg, &pend, 'c', 'p');
    // Удаление элемента 5
    //if(!remove (&pbeg, &pend, Form[3]))cout << "не найден";
    // Вставка элемента 200 гюсле элемента 2:
    
    /*
    if (scob> 0)
           cout << "( bigger"<<ind<<endl;
    else if (scob< 0) 
           cout << ") bigger"<<ind<<endl;
    else if (scob == 0) cout << "Good";
    */
 
    return 0;
}
Добавлено через 30 минут
Пожалуйста помогите, до среды нужно сделать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while (pv)
    {
        if(pv->a=='(')
        {       
            
            pv->a=' ';  
            
                
        }
        // вывод списка на экран
        cout << pv->a;
        pv = pv->next;
 
    }
Вот я написал, а как сделать, чтобы искал парную правую левой скобке?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru