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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.89
Orakul
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 120
#1

Тип множество - C++

08.07.2012, 17:15. Просмотров 5193. Ответов 14
Метки нет (Все метки)

Кто знает в делфи есть тип множество например set of char=['a'..'z'] ,
а в с++ есть аналог? или приходится довольствоваться массивами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2012, 17:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Тип множество (C++):

Есть ли в С++ тип данных 'множество'? - C++
Есть ли в С++ тип данных 'множество'? Если нет, то как реализовать?

Определить тип данных "множество целых чисел" - C++
Доброго времени суток, есть несколько задачек, не могу с ними справиться :( Может кто-нибудь сможет... Заранее огромное спасибо! ...

На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов ур - C++
На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов уравнения). Найти две такие...

На плоскости заданы множество точек А и множество прямых B - C++
На плоскости заданы множество точек А и множество прямых B. Найти две такие различные точки из А, чтобы проходящая через них прямая была...

Множество точек.Найти множество треугльники - C++
ДАно 3n точек на плоскости , причем не какие три не лежат на одной прямой. Построить множество треугольников с вершинами в этих точках так...

На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы - C++
На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы,...

14
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
08.07.2012, 17:39 #2
Orakul

http://cplusplus.com/reference/stl/set/
1
Orakul
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 120
08.07.2012, 17:43  [ТС] #3
Арсенал,
а на могучем не имеется?
0
Catstail
Модератор
22838 / 11204 / 1812
Регистрация: 12.02.2012
Сообщений: 18,444
08.07.2012, 18:48 #4
Множества неплохо моделируются битовыми шкалами.
1
Orakul
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 120
08.07.2012, 18:58  [ТС] #5
Catstail,
а по подробнее про битовые шкалы ?
0
Catstail
Модератор
22838 / 11204 / 1812
Регистрация: 12.02.2012
Сообщений: 18,444
08.07.2012, 19:05 #6
Для битовых шкал идеально подходят беззнаковые целые. Если Ваши множества содержат не более 32-х элементов, то достаточно long. Если больше - массив long.

Рассмотрим простой случай:

Чтобы поднять i-й бит переменной unsigned long Scale выполняем код:

C++
1
Scale=Scale | (1 << i);
Чтобы опросить i-й бит, пишем:

C++
1
if (Scale & (1 << i) ...
Операции над множествами выполняются, как логические:

Объединение: Scale1 | Scale2
Пересечение: Scale1 & Scale2
Отрицание: ~Scale

Вроде бы так...
0
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
08.07.2012, 19:07 #7
Catstail
Не подскажете где можна почитать про байты биты и т.д ?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.07.2012, 19:07 #8
Цитата Сообщение от Orakul Посмотреть сообщение
а по подробнее
для чего вам множество? опишите задачу
0
Zuzik
244 / 232 / 39
Регистрация: 11.06.2012
Сообщений: 1,519
08.07.2012, 19:13 #9
Цитата Сообщение от Orakul Посмотреть сообщение
Арсенал,
а на могучем не имеется?
Если учишь программирование то ты будешь должен уметь разбирать инструкции и т.п. на английском, а не только на великом и могучем.
0
Orakul
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 120
08.07.2012, 19:22  [ТС] #10
Jupiter,
так как я писал на делфи то и решил для изучения С++ и знакомства с синтаксисом
проще будет переписать на него свои программы с делфи. Так вот пишу программу компилятор с языка С++ (на делфи почти написал осталось чуток).Так вот у меня есть функция которая получает входные данные - строку кода который нужно проанализировать на предмет корректности символов. И вот те символы которые корректны находятся во множестве если входящий символ не находится во множестве тогда функция генерирует сообщение об ошибке
Pascal
1
2
3
4
5
function LexP(s: string): int64;                                                           // *
const                                                                                         // *
  lit: set of char = ['A' .. 'Z', 'a' .. 'z', '_'];                                            // *
  dig: set of char = ['0' .. '9'];                                                              // *
  s_trm: set of char = ['(',')', '>', '<', '='];
на паскале я использую множества а в С++ не знаю как правильно по синтаксису это дело
обставить.

Добавлено через 1 минуту
Zuzik,
Я полностью с Вами солидарен и это тоже в планах - ближайших.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.07.2012, 19:50 #11
Orakul, используйте функции из хедера cctype
http://www.cplusplus.com/reference/clibrary/cctype/
1
Catstail
Модератор
22838 / 11204 / 1812
Регистрация: 12.02.2012
Сообщений: 18,444
08.07.2012, 20:50 #12
Про биты и байты - в любом элементарном курсе информатики
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 17
08.07.2012, 23:50 #13
enum,std::set<>,а в Builder-е (если уже зашла речь про делфи) Set но для диапазонов значений используются ф-ции типа isalpha() http://www.cplusplus.com/reference/clibrary/cctype/isalpha/
1
Orakul
2 / 2 / 0
Регистрация: 07.07.2012
Сообщений: 120
09.07.2012, 00:53  [ТС] #14
Avazart,
А на примере покажи пожалуйста как объявить множество диапазона set of char['A'..'Z']

Добавлено через 42 минуты
Jupiter,
а пример показать не слабо на пример в делфи я так делаю:my_mnojistvo: set of char=['a'..'z'];
это я так объявил переменную а как это сделать в С++
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 17
09.07.2012, 01:30 #15
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <string>
 
#include <set>
 
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
system("chcp 1251");
 
std::set<char> cs;
 
for(int i='A';i<='Z';i++) cs.insert(i);
 
std::string str="A1bZzh2;";
 
for(unsigned i=0;i<str.length();i++)
 if(cs.find(str[i])!=cs.end())
      std::cout<<str[i]<<" "<<"Принадлежит множеству"<<std::endl;
 else std::cout<<str[i]<<" "<<"Вне множества"        <<std::endl;
 
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Вывод:
Код
Текущая кодовая страница: 1251
A Принадлежит множеству
1 Вне множества
b Вне множества
Z Принадлежит множеству
z Вне множества
h Вне множества
2 Вне множества
; Вне множества
Для продолжения нажмите любую клавишу . . .
2
09.07.2012, 01:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 01:30
Привет! Вот еще темы с ответами:

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR? - C++
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Какой символьный тип использует тип std::string? - C++
Какой тип данных использует класс String? Char? И написано ли это в в документе #include &lt;string&gt;?

тип cout-a ostrieam? соответствено тип cin-a istream? - C++
тип cout-a ostrieam? соответствено тип cin-a istream?

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении? - C++
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...


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

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

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