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

Непонятная операция - C++

Восстановить пароль Регистрация
 
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 15:45     Непонятная операция #1
Всем доброго времени суток!
Помогите разобраться, ранее не встречал:
Есть
C++
1
enum Sute {clubs,diamonds,hearts,spades}
в main() мы создаем колоду карт и заполняем. Так вот при заполнении в цикле есть такая операция:
C++
1
Suit su = Suit(j/13);
С левой частью все ясно, а вот с правой не очень.
Почему мы не работаем с объектом Suit, а как-то напрямую это делаем...вообще не ясно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2010, 15:45     Непонятная операция
Посмотрите здесь:

C++ Операция mod()
Непонятная операция в листинге C++
C++ операция <<::>>
C++ операция switch
операция сдвига C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
18.08.2010, 15:49     Непонятная операция #2
А чего весь код не выложил? Что тут по обрывкам понять можно?.....
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 15:51  [ТС]     Непонятная операция #3
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А чего весь код не выложил? Что тут по обрывкам понять можно?.....
Потому-что весь остальной код мне вполне ясен.
Здесь же непонятна сама запись в правой ее части = Suit();
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
18.08.2010, 15:58     Непонятная операция #4
j я так понимаю счетчик, а 13 это количество карт одной масти (валет, король и т.д.)?
Dzhej-Dzhej
Заблокирован
18.08.2010, 15:58     Непонятная операция #5
вот более расширенный синтаксис:
C++
1
enum Sute {clubs = 0,diamonds = 1,hearts = 2,spades = 3}
C++
1
Suit(j/13)
- j-тая карта в колоде принимает значение одной из мастей(карт - 52, одной масти - по 13)
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
18.08.2010, 15:59     Непонятная операция #6
А Suit точно объект, а не метод?
Dzhej-Dzhej
Заблокирован
18.08.2010, 16:04     Непонятная операция #7
перечисление(типа массива)
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:11  [ТС]     Непонятная операция #8
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А Suit точно объект, а не метод?
C++
1
enum Suit(бла, бла, бла)
точно не метод.

Добавлено через 51 секунду
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
вот более расширенный синтаксис:
C++
1
enum Sute {clubs = 0,diamonds = 1,hearts = 2,spades = 3}
C++
1
Suit(j/13)
- j-тая карта в колоде принимает значение одной из мастей(карт - 52, одной масти - по 13)
Почему не Suit su = su(j/13)?
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
18.08.2010, 16:12     Непонятная операция #9
если честно я что то тоже не догоняю особенно это деление j/13
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:17  [ТС]     Непонятная операция #10
Цитата Сообщение от SergProgC++ Посмотреть сообщение
если честно я что то тоже не догоняю особенно это деление j/13
j/13 - это как правильно заметил Dzhej-Dzhej, распределение карт по мастям.
В каждой масти 13 карт. В цикле из 52 итераций, ко всем 52м картам добавляется масть.

т.к. suit это int перечисление, то:
j<13 - значение будет = 0. Следовательно первая масть
j>13<=26 - значение будет = 1. Следовательно вторая масть..
и т.д.

Добавлено через 1 минуту
Мне же не ясно, почему мы обращаемся напрямую к объявлению списка, а не к объекту списка...
Mr.X
Эксперт С++
 Аватар для Mr.X
2804 / 1580 / 247
Регистрация: 03.05.2010
Сообщений: 3,677
18.08.2010, 16:24     Непонятная операция #11
C++
1
Suit su = Suit(j/13);
Здесь целое приводится к типу Suit, так как неявное преобразование целого в значение типа перечисления запрещено стандартом.
Непонятно только, почему у вас после строчки
C++
1
enum Sute {clubs,diamonds,hearts,spades}
нет точки с запятой.
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:27  [ТС]     Непонятная операция #12
Цитата Сообщение от Mr.X Посмотреть сообщение
C++
1
Suit su = Suit(j/13);
Здесь целое приводится к типу Suit, так как неявное преобразование целого в значение типа перечисления запрещено стандартом.
Т.е. эта запись эквивалентна:
C++
1
Suit su = static_cast<Suit>(j/13)
?
Непонятно только, почему у вас после строчки
C++
1
enum Sute {clubs,diamonds,hearts,spades}
нет точки с запятой.
Это просто спешка. Уверяю - в программе точка с запятой присутствует.
Mr.X
Эксперт С++
 Аватар для Mr.X
2804 / 1580 / 247
Регистрация: 03.05.2010
Сообщений: 3,677
18.08.2010, 16:30     Непонятная операция #13
Цитата Сообщение от half-node Посмотреть сообщение
Т.е. эта запись эквивалентна:
C++
1
Suit su = static_cast<Suit>(j/13)
?
Ну да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2010, 16:38     Непонятная операция
Еще ссылки по теме:

Операция с Матрицей C++
C++ побитовая операция |

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

Или воспользуйтесь поиском по форуму:
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:38  [ТС]     Непонятная операция #14
Все. Спасибо большое! Более мне ничего и не нужно было.
Yandex
Объявления
18.08.2010, 16:38     Непонятная операция
Ответ Создать тему
Опции темы

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