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

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

Войти
Регистрация
Восстановить пароль
 
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
#1

АТД список. Переставить местами элементы списка - C++

29.09.2011, 01:32. Просмотров 653. Ответов 3
Метки нет (Все метки)

Здравствуйте!!

Возник очередной вопрос, что то мне туговато даются АТД!

Есть список котором может быть только одна открывающая скобка и одна закрывающая скобка!


Так вот нужно поменять местами скобки если закрывающая скобка входит в список первой!!

Например:

Есть такой список a c ) d v c s ( d s, нужно поменять местами скобки и получить такой a c ( d v c s ) d s список.

Если же скобки стоят в нормальном порядке "( )" то оставить список без изменений!

Спасибо!

на данном этапе, впринципе все стандартно!!
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
#include "iostream"
#include <list>
 
using std::list;
using std::cout;
using std::cin;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"");
    int n;
    char num;
    
    list<char> l; 
 
    cout << "Введите длину списка: ";
    cin >> n;
    cout << '\n';
 
    cout << "Введите содержимое списка: ";
 
    for(int i = 0; i < n; i++) 
    {   
        cin >> num;
        l.push_back(num);
    }
    cout << '\n';
    
 
 
    
    cout << "Упорядоченный список: ";
    for(list<char>::iterator iter1 = l.begin(); iter1 != l.end(); iter1++)
    {
        cout << *iter1 << " ";
    }
    cout << "\n";
 
    system("pause >> NULL");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2011, 01:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос АТД список. Переставить местами элементы списка (C++):

Атд список. Удалить одинаковые элементы. - C++
Здравствуйте!!!!! Вот еще одна проблемка, расчитываю на Вашу помощь! Суть такова! Есть АТД список, в нем нужно оставить...

Создать динамический список, поменять местами последний и первый элементы списка, предпоследний и второй и т.д. - C++
Всем привет. Подкиньте идею, весь мозг сломал. Задание:Создать динамический список. Поменять местами последний и первый элементы списка,...

АТД список. Заменить меньшую часть списка символом "#" - C++
Здравствуйте!! Подскажите пожалуйста!! Нужна заменить меньшую часть (половину) списка символом &quot;#&quot; ! Например: Есть...

Вывести элементы массива в виде таблицы и переставить его элементы местами - C++
Скажите каким образом переставляется двумерный массив ? К примеру : {1,2,3,4,5} мне нужно элементы поменять местами так чтобы последний (5)...

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.09.2011, 02:49 #2
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
#include <list>
#include <iostream>
using namespace std;
 
int  main(void) {
  list<char> lst;
  const char* str = "(a) c ) d v c s ( d s SWAT (7) ops";
  lst.insert(lst.begin(), str, str + strlen(str));
 
  int  num = 0;
  list<char>::iterator iter;
  for(iter = lst.begin(); iter != lst.end(); *iter++) {
          if( *iter == ')' ) {
                 if(--num == -1)
                      *iter = '(';
          } else if(*iter == '(') {
                 if(++num == 0)
                      *iter = ')';
          }
  }
  copy(lst.begin(), lst.end(), ostream_iterator<char>(cout, ""));
  cout.put('\n');
  cin.get();
  return 0;
}
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
29.09.2011, 15:48  [ТС] #3
Спасибо большое!!!!

Один вопрос!! почему не распознается вот это строка

C++
1
ostream_iterator<char>
в Visual C++ 2010???

Вывел список таким образом

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
#include <list>
#include <iostream>
 
using namespace std;
 
int  main(void) 
{
 setlocale(0,"");//руский щрифт в консоле
    int n;
    char num_1;
    
    list<char> lst; //объявили список
 
    cout << "Введите длину списка: ";
    cin >> n;
    cout << '\n';
 
    cout << "Введите содержимое списка: ";
 
    for(int i = 0; i < n; i++) //заполняем список
    {   
        cin >> num_1;
        lst.push_back(num_1);
    }
    cout << '\n';
 
  int  num = 0;
  list<char>::iterator iter;
  for(iter = lst.begin(); iter != lst.end(); *iter++) 
  {
          if( *iter == ')' ) 
          {
                 if(--num == -1)
                      *iter = '(';
          } else if(*iter == '(') 
          {
                 if(++num == 0)
                      *iter = ')';
          }
  }
  cout << '\n';
 
  cout << "Упорядоченный список: ";
  for(list<char>::iterator iter1 = lst.begin(); iter1 != lst.end(); iter1++)
    {
        cout << *iter1 << " ";
    }
    cout << "\n";
 
system("pause >> NULL");
  return 0;
}
Добавлено через 12 часов 45 минут
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Один вопрос!! почему не распознается вот это строка
Код C++1 ostream_iterator<char>
в Visual C++ 2010???

Разобрался, нужно подключить

C++
1
#include <iterator>
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,460
29.09.2011, 16:39 #4
Обработал мелким напильником
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
#include <list>
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iterator>
#include <algorithm>
using namespace std;
 
bool IsOdd (char i) {
  return ((i==')'||i=='('));
}
 
 
 
int  main(void) {
  list<char> lst;
//  const char* str = "a( c  d v c s ) d s SWAT 7 ops";
  const char* str = "a) c  d v c s ( d s SWAT 7 ops";
  lst.insert(lst.begin(), str, str + strlen(str));
 
 
 
 
  int  num = 0;
  list<char>::iterator iter;
  list<char>::iterator it;
 
 
  it = find_if (lst.begin(), lst.end(), IsOdd);
 
  if (*it==')') {
   iter = find_if (++it, lst.end(), IsOdd);
   it--;
   swap (*it, *iter);
  } 
 
 
  copy(lst.begin(), lst.end(), ostream_iterator<char>(cout, ""));
  cout.put('\n');
  cin.get();
  getchar ();
  return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 16:39
Привет! Вот еще темы с ответами:

Переставить в массиве местами максимальный и минимальный элементы - C++
Вычислить выражение 1*2+2*3*4+3*4*5*6+...+n*(n+1)*(n+2)*...*2n Дан массив X из N целых чисел. Переставить в X местами...

Переставить местами максимальный и последний элементы массива - C++
Необходимо переставить местами максимальный и последний элементы массива, если максимальный и минимальный элементы на четных позициях,...

Переставить местами максимальный и минимальный элементы массива - C++
Дан массив, состоящий из n целых чисел (n&lt;=10). Переставить местами максимальный и минимальный элементы.

Переставить местами элементы массива по заданной схеме - C++
2.Дан массив из 18 вещественных чисел. Преобразовать его следующим образом: а1,а18,а2,а17,а3,а16,а4,а15...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.09.2011, 16:39
Ответ Создать тему
Опции темы

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