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

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

Войти
Регистрация
Восстановить пароль
 
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
#1

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

18.08.2010, 15:45. Просмотров 597. Ответов 13
Метки нет (Все метки)

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

Непонятная операция в листинге - C++
Почему if(s=='.') использует s= на s и что значит ++s мы сдвигаем указатель или что растолкуйте #include <iostream.h> #include...

операция <<::>> - C++
имею код char Car::*Get_Marka(){ return marka ; } char Car::*Get_Color() { return color ; } bool Car::Get_Rastamojena() { return...

Условная операция - C++
Ребят помогите написать вот такой припер в VisualStudio С++ Только начал учить С++, не до конца понимаю, заранее спасибо Нарушен...

Операция присваивания (=) - C++
Добрый день, интересует вот что: правильно ли я считаю, что в int x = .0 + 1F + 4L; 1) Сперва все операнды сложения (по правую...

побитовая операция | - C++
есть 3 матрицы : float **M,**M1,**M2; нужно выполнить for(i=0;i&lt;n;i++) { for(j=0;j&lt;m;j++) {

побитовая операция - C++
Вычислить, объяснить результат выражения, используя поразрядные операции, для заданных значений целых переменных a, b, c. a+b*c a = 1,...

13
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,361
18.08.2010, 15:49 #2
А чего весь код не выложил? Что тут по обрывкам понять можно?.....
0
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 15:51  [ТС] #3
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А чего весь код не выложил? Что тут по обрывкам понять можно?.....
Потому-что весь остальной код мне вполне ясен.
Здесь же непонятна сама запись в правой ее части = Suit();
0
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,361
18.08.2010, 15:58 #4
j я так понимаю счетчик, а 13 это количество карт одной масти (валет, король и т.д.)?
0
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)
0
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,361
18.08.2010, 15:59 #6
А Suit точно объект, а не метод?
0
Dzhej-Dzhej
Заблокирован
18.08.2010, 16:04 #7
перечисление(типа массива)
0
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)?
0
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,361
18.08.2010, 16:12 #9
если честно я что то тоже не догоняю особенно это деление j/13
0
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 минуту
Мне же не ясно, почему мы обращаемся напрямую к объявлению списка, а не к объекту списка...
0
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.08.2010, 16:24 #11
C++
1
Suit su = Suit(j/13);
Здесь целое приводится к типу Suit, так как неявное преобразование целого в значение типа перечисления запрещено стандартом.
Непонятно только, почему у вас после строчки
C++
1
enum Sute {clubs,diamonds,hearts,spades}
нет точки с запятой.
0
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}
нет точки с запятой.
Это просто спешка. Уверяю - в программе точка с запятой присутствует.
0
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.08.2010, 16:30 #13
Цитата Сообщение от half-node Посмотреть сообщение
Т.е. эта запись эквивалентна:
C++
1
Suit su = static_cast<Suit>(j/13)
?
Ну да.
1
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:38  [ТС] #14
Все. Спасибо большое! Более мне ничего и не нужно было.
0
18.08.2010, 16:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2010, 16:38
Привет! Вот еще темы с ответами:

Операция mod() - C++
Подскажите, pls, как осуществить операцию m mod n (вычисление остатка) не используя операцию деления в процессе вычисления?

Операция присваивания - C++
Чем отличается операция присваивания &quot;/=&quot; от &quot;=&quot; ?

Тернарная операция - C++
Всем доброго времени суток. Вот написал прогу #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; ...

операция присваивания - C++
Столкнулся с глупой проблемой, может кто объяснить, как в таком случае делается присваивание и в чем у меня ошибка? int a=1, b=2, c=3,...


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

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

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