Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
#1

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

29.09.2011, 01:32. Просмотров 728. Ответов 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
Ответы с готовыми решениями:

Атд список. Удалить одинаковые элементы.
Здравствуйте!!!!! Вот еще одна проблемка, расчитываю на Вашу помощь! ...

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

АТД список. Заменить меньшую часть списка символом "#"
Здравствуйте!! Подскажите пожалуйста!! Нужна заменить меньшую часть...

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

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

3
xAtom
917 / 742 / 299
Регистрация: 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
1060 / 579 / 87
Регистрация: 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
быдлокодер
1707 / 894 / 105
Регистрация: 04.06.2008
Сообщений: 5,527
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

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

Переставить местами элементы массива так, чтобы сначала были элементы на четных позициях, а потом на нечетных
нужно переставить местами элементы массива так, чтобы сначала были элементы на...

Переставить местами элементы массива по заданной схеме
2.Дан массив из 18 вещественных чисел. Преобразовать его следующим образом:...


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

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

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