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

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

Войти
Регистрация
Восстановить пароль
 
Ксюшк@
0 / 0 / 0
Регистрация: 02.06.2010
Сообщений: 17
#1

Проблема с композицией - C++

23.10.2011, 19:06. Просмотров 764. Ответов 10
Метки нет (Все метки)

мне надо создать карту и используя композицию-колоду карт.при этом конструкторы должны инициализировать колоду упорядоченно и в разброс.я попыталась инициализировать в разброс,но не понимаю в чем ошибка.помогите пожалуйста!
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
{ class karta{
public:
int mast;
int zvan;
 
};
class koloda{
 
int i,karti[36],k,a;
public:
koloda()
{
 for(i=0;i<36;i++)
 {
   this->k=new  karta();
   randomize;
   k.mast=random(3)+1;
   k.zvan=random(9)+6;
   for(a=0;a<i;a++)
   {
      if (k==karti[a]) {i--;}
      else
   {karti[i]=k;}
   }
 }
}
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2011, 19:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с композицией (C++):

Объясните на данном примере как работать с композицией - C++
Не могу понять как работать с композицией. А именно вывод интересует. Что я делаю не так?#include &lt;iostream&gt; using namespace std; ...

Различие между агрегацией и композицией - Базы данных
В чем различие между агрегацией и композицией, в б.д? Про части и целые, знаю; обозначение( само собой); какое еще различие между ними есть?

Композицией базовых функций CAR, CDR, CONS, LIST - Lisp
Добрый день! прошу помочь в решении задачи: Композицией базовых функций CAR, CDR, CONS, LIST переверните список (a b (c d (e) f) g h)....

Проблема с - C++ Builder
Здравствуйте! Проблема такого вида: &quot;сообщение должно содержать кнопки Ok, Cancel и после нажатия на кнопки должно выводиться простое...

проблема с jq - jQuery
есть форма:&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt; ...

Проблема - Wi-Fi
3 дня назад подключил wifi,после этого начались такие проблемы,когда захожу на сервер программы teamspeak 3,то у меня через секунд 20...

10
tula555
-15 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 65
23.10.2011, 20:01 #2
getchar; в конце попробуй поставить
0
Ксюшк@
0 / 0 / 0
Регистрация: 02.06.2010
Сообщений: 17
23.10.2011, 20:05  [ТС] #3
компилятор пишет,что не может конвертировать karta в int*. и выражение k.mast, k.zvan вызывают у него недовольство. вряд ли getchar меня спасет
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
23.10.2011, 22:01 #4
Цитата Сообщение от Ксюшк@ Посмотреть сообщение
выражение k.mast, k.zvan
k не является экземпляром класса Карта. Поэтому и нельзя так обратится к полям класса
k также не является указателем, поэтому нельзя выделить под него память оператором new
Для генерации случайных чисел используются функции rand и srand
0
Ксюшк@
0 / 0 / 0
Регистрация: 02.06.2010
Сообщений: 17
23.10.2011, 22:03  [ТС] #5
Цитата Сообщение от aeshes Посмотреть сообщение
k не является экземпляром класса Карта. Поэтому и нельзя так обратится к полям класса
k также не является указателем, поэтому нельзя выделить под него память оператором new
Для генерации случайных чисел используются функции rand и srand
а как тогда инициализировать колоду и при этом использовать композицию?
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
23.10.2011, 22:13 #6
Ксюшк@, в принципе у Вас там многое неправильно, но вот так колоду перемешивать уж совсем никуда не годится. Правильнее к упорядоченному массиву алгоритм random_shuffle применить. http://www.cplusplus.com/reference/algorithm/random_shuffle/
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
23.10.2011, 22:15 #7
В классе колода должен быть только массив карт, в крайнем случае - их количество, если оно может меняться. Никаких k, a, i и т.п. в классе Колода быть не должно.
Если рассматривать такую, реализацию, как у вас, то примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class karta
{
public:
int mast;//1-червы, 2 - бубны, 3-трефы, 4- пики
int zvan;//1-шестерки,...,9-туз
};
 
class koloda{
 
int karti[36];
public:
koloda()//заполняет попорядку
{
   for(int i=0;i<36;i++)
   {
       karta[i].mast=i/9+1;
       karta[i].zvan=i%9+1;
    }
};
но вообще-то, с точки зрения ООП, такая архитектура классов как-то не комильфо...
0
Ксюшк@
0 / 0 / 0
Регистрация: 02.06.2010
Сообщений: 17
23.10.2011, 22:21  [ТС] #8
Спасибо за идею) Осталась одна проблема-как задать упорядоченный массив,если ,как я поняла,я не могу обратиться к полям одного класса в другом классе?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
class koloda{
 
int karti[36];
public:
koloda()//заполняет попорядку
{
   for(int i=0;i<36;i++)
   {
       karta[i].mast=i/9+1;
       karta[i].zvan=i%9+1;
    }
};
а где здесь композиция?и как я могу написать karti[i].mast если это поля разных,не связанных классов?или могу?
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
23.10.2011, 23:03 #9
Ксюшк@, композиция - это то, что в классе Колода у вас есть массив из объектов класса Карта (karti[36]). И поэтому вы можете обратится к полям каждой карты из этого массива внутри методов класса Колода
0
Ксюшк@
0 / 0 / 0
Регистрация: 02.06.2010
Сообщений: 17
23.10.2011, 23:06  [ТС] #10
если это массив из класса Карта,наверно я не должна писать перед ним int? или кашу маслом не испортишь?)
спасибо за помощь)
0
aeshes
441 / 204 / 13
Регистрация: 07.10.2011
Сообщений: 462
23.10.2011, 23:29 #11
Ксюшк@, да, массив должен иметь тип karta, забыла поправить в прошлом варианте, смотрела только на функцию, извини

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class karta
{
public:
int mast;//1-червы, 2 - бубны, 3-трефы, 4- пики
int zvan;//1-шестерки,...,9-туз
};
 
class koloda{
 
karta karti[36];
public:
koloda()//заполняет попорядку
{
   for(int i=0;i<36;i++)
   {
       karti[i].mast=i/9+1;
       karti[i].zvan=i%9+1;
    }
};
1
23.10.2011, 23:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2011, 23:29
Привет! Вот еще темы с ответами:

проблема - Windows 7
Проблема в следующем: выбил экран смерти и вот такие ошибки: STOP:0.000000BE (0.82A99478, 0.02а99121,0.А3В5С3С, 0.0000000B) И еще...

Проблема с FOR - CMD/BAT
В чем проблема Когда рисую так: echo off cls :mm dir /a-d /b c:\tmp\1.pdf echo 1й проход № ошибки=%errorlevel% pause if...

Проблема с like - MySQL
Почему не работает select * from `data` where `name_data` like '%строка запроса%' Выдает результат 0 строк, хотя я точно знаю, что...

Проблема - Сетевое оборудование
Привет Проблема началась неделю назад. Дело в том, все время разъединяет интернет коннект и при етом модем какбудто перезагружается....


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

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

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