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

Контейнер set - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Айгуль
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 8
21.06.2012, 11:13     Контейнер set #1
Два множества, элементами которого являются строчные буквы латинского алфавита, представлены с помощью стандартного типа SET. В программе выводится на экран их декартово произведение.
Задаю два итератора, первый работает нормально, а второй - нет. Как их правильно задавать, чтобы они не конфликтовали?
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
#include <cstdlib>
#include <iostream>
#include <set>
using namespace std;
 
const int size=26;
 
void main()
{
    setlocale(LC_ALL,"Russian");
 
    char *s1=new char[size+1];
    char *s2=new char[size+1];
 
    //ввод данных
 
    set <char> set1;
    set <char> set2;
 
    cout<<"Введите первый вектор (без пробелов)\n";
    cin>>s1;
    s1=strlwr(s1);
    for (int i=0;i<strlen(s1);i++)
        set1.insert(s1[i]);
 
    cout<<"Введите второй вектор (без пробелов):\n";
    cin>>s2;
    s2=strlwr(s2);
    for (int i=0;i<strlen(s2);i++)
        set2.insert(s2[i]);
 
    //вычисление декартового произведения
    set<char>::iterator i;  //итераторы для прохода по множествам
    set<char>::iterator j;
    for (i=set1.begin();i!=set1.end();i++)
        for (j=set2.begin();j!=set2.end();j++);
            cout<<"("<<*i<<","<<*j<<")\n";
 
    system("pause");
}
Добавлено через 17 минут
Небольшая опечатка: в выводе после объявления второго цикла не должно быть точки с запятой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,600
Записей в блоге: 17
21.06.2012, 15:56     Контейнер set #21
И зачем нам нужно просто так занимать память?
А зачем 10 например выделять память под локальную переменную когда можно один раз выделить её под глобальную и в дальнейшем её использовать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
21.06.2012, 16:04     Контейнер set #22
Цитата Сообщение от MrGluck Посмотреть сообщение
И изменить глобальные переменные может любая функция, поэтому уловить ошибку может быть сложно.
Константа тут. Потому я даже ошибкой это считать не могу. Просто не очень хороший стиль программирования. А в некоторых случаях - единственно приемлемый вариант.
Jupiter
21.06.2012, 16:04
  #23
 Комментарий модератора 
Прекращаем оффтоп!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2012, 20:43     Контейнер set
Еще ссылки по теме:

C++ контейнер set
Ввод данных в контейнер set C++
Используя STL контейнер set заполнить массив C++

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

Или воспользуйтесь поиском по форуму:
Айгуль
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 8
23.06.2012, 20:43  [ТС]     Контейнер set #24
Константа объявлена не в функции, потому что используется и других частях программы, которые здесь не присутствуют, чтобы не нагромождать лишний код.
В чем ошибка в итераторах я так и не поняла, но в цикле поставила префиксный инкремент (т.е. не i++, j++ а ++i,++j) и все заработало. Если кто-то сможет объяснить в чем причина, буду признательна.
Yandex
Объявления
23.06.2012, 20:43     Контейнер set
Ответ Создать тему
Опции темы

Текущее время: 16:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru