|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.03.2013, 18:15 | #1 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
ошибка с++
Решил попробывать написать покер.))))
Всё работает вроде нормально кроме функции по выдаче карт игроку(newcards). Работает через раз. 3 варианта работы программы: 1. Раздаёт нормально и выводит на эран. 2. Работает но не выводит карты игрока(послеследующие функции работают) 3 Вылетает. Можете помочь разобраться в чём дело, предпологаю что проблема где-то здесь: card pack::getcard() player::newcards(pack& a) Код:
Последний раз редактировалось tolikprankster; 05.03.2013 в 18:20. |
05.03.2013, 18:27 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
1) Что говорит отладчик? Как вариант, что говорит отладочная печать, выводящая pos на каждом getcard()?
2) Воля Ваша, но shuffle() странен. r принимает значения от 1 до 52, а индекс cards может меняться от 0 до 51... гм... 3) Ужас из switch в конструкторе card можно заменить на: Код:
|
05.03.2013, 18:51 | #3 | |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Цитата:
switch заменю) |
|
06.03.2013, 00:11 | #4 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Возник ещё один вопрос по динамическому выделению памяти. Суть в следующем.
В начале функции game() создается массив игроков(player), в конце он удаляется. В конструкторе и деструкторе данного класса переменная cplayer соответственно инкреминтируется и декриментируется. Однако с каждым запуском функции game(), cplayer уменьшается на 1. Тоесть если count=5, то конструктор вызывается 5 раз, а деструктор 6. class player{ public: static int cplayer; }; void game(int count) { player* n=new player[count]; cout<<player::cplayer<<"\n"; createpack(); showpack(); shuffle(); desk* d = new desk; deal(n,count); for(int i=0;i<count;i++) n[i].spcards(); d->flop(); d->showcom(); besthand(n[2],d); delete d; delete [count]n; getch(); } |
06.03.2013, 01:08 | #5 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Проблема была в besthand(n[2],d);
создал конструктор копии, но всё равно здесь "besthand(n[2],d);" вызывается обычный конструктор. Почему? Код:
|
06.03.2013, 01:09 | #6 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
1) Почему переменная player::cplayer public?
2) Почему она не инициализируется при объявлении? 3) " delete [count]n;" Вероятно, имелось в виду delete[] n; 4) Я вижу только один вывод "cout<<player::cplayer<<"\n";". Расставьте их в разных точках функции для более точной диагностики. |
06.03.2013, 01:11 | #7 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
|
|
06.03.2013, 01:18 | #8 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Nero - ошибка драйвера DMA. ошибка CRC | NecRoMat | Софт | 5 | 09.05.2012 01:29 |
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? | ArchiCurtis | Помощь студентам | 2 | 07.04.2012 14:16 |
Ошибка run-time Error 1004 общая ошибка ODBC | kaval88 | Microsoft Office Excel | 0 | 27.02.2011 20:20 |
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? | ankris | HTML и CSS | 5 | 23.11.2010 16:58 |
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... | infrared | Помощь студентам | 0 | 16.04.2009 17:44 |