Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2011, 22:00   #1
Сергей Наливко
Новичок
Джуниор
 
Регистрация: 14.07.2011
Сообщений: 2
По умолчанию Ошибка в коде.

Здравствуйте. Я изучаю язык С++ около года. Вот решел намисать программу, которая эмитировала бы лотерею. Для этого написал часть кода, чтобы сформировать лотерейные билеты. Однако возникла непонятная мне ситуация. Функция create создает билет, check - проверяет, был ли такой же билет сгенерирован ранее. Вслучае, если не был, то я добавляю этот билет в список, иначе, не добавляю. Но в чем основной парадоск. Я решил проверить, как быстро генерируются билеты, сделел цикл, с выводом числа сгенерированных билетов (переменная сount). Но вот если в Debug нажимать F5 не с частотой менее раза в секунду (либо использвать функцию Sleep), то все работает правильно, а если запустить просто так, то всегда один билет. Я предполагаю, что у меня ошибка в выделении и распределении памяти.
Вот кусок кода:
for (int i = 0; i < 30; i++)
{
getTicket = create(); //сгенерировать билет
if (check(ticketArray, getTicket, count)) //проверить не было ли такого
{
int*** t_ticketArray = new int **[count + 1];
for (int n = 0; n < count; n++)
t_ticketArray[n] = ticketArray[n];
t_ticketArray[count++] = getTicket;
system("cls");
cout << count << " tickets are ready " << endl;
delete[] ticketArray;
ticketArray = t_ticketArray;
// Sleep(1000);
}
}
cout << '\n' << count;
Сергей Наливко вне форума Ответить с цитированием
Старый 14.07.2011, 22:49   #2
Nedward
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 85
По умолчанию

Уфф... не люблю разбираться в чужом коде
Вы точно изучаете С++ около года? За целый год не услышать о полезности тега "код" - это нужно умудриться

О коде - это очень сильное колдунство, хотелось бы увидеть программу целиком.
И вообще, почему бы не использовать векторы из STL? Избавились бы от кучи проблемы с выделением/высвобождением памяти, да и переменная count стала бы ненужна.
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (c) Martin Golding

Последний раз редактировалось Nedward; 14.07.2011 в 22:51.
Nedward вне форума Ответить с цитированием
Старый 14.07.2011, 23:17   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
int*** t_ticketArray = new int **[count + 1];
что это ?
NiCola999 вне форума Ответить с цитированием
Старый 14.07.2011, 23:27   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от NiCola999 Посмотреть сообщение
Код:
int*** t_ticketArray = new int **[count + 1];
что это ?
Трехмерный массив. Явный признак чудовищной архитектуры программы.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 14.07.2011, 23:30   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

я в курсе что это, я имею ввиду, что это за ужас
NiCola999 вне форума Ответить с цитированием
Старый 15.07.2011, 14:43   #6
Сергей Наливко
Новичок
Джуниор
 
Регистрация: 14.07.2011
Сообщений: 2
По умолчанию

Спасибо большое. Я немного изменил программу, сделал через класс и даже нашел в чем была ошибка.
Сергей Наливко вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в коде С Mr.Merso Помощь студентам 4 10.05.2011 00:52
ошибка в коде sanya94 Общие вопросы C/C++ 15 12.01.2011 19:26
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в коде Cronos20 PHP 3 09.07.2010 23:31
Ошибка в коде konstantinopol Общие вопросы по Java, Java SE, Kotlin 1 26.10.2009 23:21