Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/54: Рейтинг темы: голосов - 54, средняя оценка - 4.57
12 / 8 / 5
Регистрация: 07.07.2012
Сообщений: 157
1

Тип множество

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

Кто знает в делфи есть тип множество например set of char=['a'..'z'] ,
а в с++ есть аналог? или приходится довольствоваться массивами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2012, 17:15
Ответы с готовыми решениями:

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

Множество set, тип элементов class <Time>
не могу разобраться, как совместить класс Time и set. Как я понимаю нужно что бы в классе было...

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

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

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
14
145 / 67 / 14
Регистрация: 30.12.2011
Сообщений: 137
08.07.2012, 17:39 2
Orakul

http://cplusplus.com/reference/stl/set/
1
12 / 8 / 5
Регистрация: 07.07.2012
Сообщений: 157
08.07.2012, 17:43  [ТС] 3
Арсенал,
а на могучем не имеется?
0
Модератор
Эксперт Python
28557 / 15427 / 3047
Регистрация: 12.02.2012
Сообщений: 25,281
Записей в блоге: 4
08.07.2012, 18:48 4
Множества неплохо моделируются битовыми шкалами.
1
12 / 8 / 5
Регистрация: 07.07.2012
Сообщений: 157
08.07.2012, 18:58  [ТС] 5
Catstail,
а по подробнее про битовые шкалы ?
0
Модератор
Эксперт Python
28557 / 15427 / 3047
Регистрация: 12.02.2012
Сообщений: 25,281
Записей в блоге: 4
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
69 / 63 / 5
Регистрация: 09.06.2012
Сообщений: 291
08.07.2012, 19:07 7
Catstail
Не подскажете где можна почитать про байты биты и т.д ?
0
Каратель
Эксперт С++
6598 / 4017 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
08.07.2012, 19:07 8
Цитата Сообщение от Orakul Посмотреть сообщение
а по подробнее
для чего вам множество? опишите задачу
0
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
08.07.2012, 19:13 9
Цитата Сообщение от Orakul Посмотреть сообщение
Арсенал,
а на могучем не имеется?
Если учишь программирование то ты будешь должен уметь разбирать инструкции и т.п. на английском, а не только на великом и могучем.
0
12 / 8 / 5
Регистрация: 07.07.2012
Сообщений: 157
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
Каратель
Эксперт С++
6598 / 4017 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
08.07.2012, 19:50 11
Orakul, используйте функции из хедера cctype
http://www.cplusplus.com/refer... ry/cctype/
1
Модератор
Эксперт Python
28557 / 15427 / 3047
Регистрация: 12.02.2012
Сообщений: 25,281
Записей в блоге: 4
08.07.2012, 20:50 12
Про биты и байты - в любом элементарном курсе информатики
0
Эксперт С++
8359 / 6097 / 610
Регистрация: 10.12.2010
Сообщений: 28,419
Записей в блоге: 30
08.07.2012, 23:50 13
enum,std::set<>,а в Builder-е (если уже зашла речь про делфи) Set но для диапазонов значений используются ф-ции типа isalpha() http://www.cplusplus.com/refer... e/isalpha/
1
12 / 8 / 5
Регистрация: 07.07.2012
Сообщений: 157
09.07.2012, 00:53  [ТС] 14
Avazart,
А на примере покажи пожалуйста как объявить множество диапазона set of char['A'..'Z']

Добавлено через 42 минуты
Jupiter,
а пример показать не слабо на пример в делфи я так делаю:my_mnojistvo: set of char=['a'..'z'];
это я так объявил переменную а как это сделать в С++
0
Эксперт С++
8359 / 6097 / 610
Регистрация: 10.12.2010
Сообщений: 28,419
Записей в блоге: 30
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2012, 01:30

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

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

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

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


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

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

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