![]() |
|
Модераторы: bsa |
![]()
|
|
| djezul |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 13.6.2009 Где: Украина , Донецк Репутация: нет Всего: нет |
||||
|
||||
| Soah |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
не заметил
djezul, |
||||||||
|
|||||||||
| djezul |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 13.6.2009 Где: Украина , Донецк Репутация: нет Всего: нет |
Soah, я уже заменил код на такой
Насчёт правильного составления, тут и опыт играет роль, согласитесь . А отладчиком я пользуюсь , и пошаговой отладкой, уже раз 20 прошёл. Я не понимаю , почему q равно N поидее а не N - 1 . Причём такой момент , если я удаляю последний элемент, всё удаляется, а если не последний , то ошибка в этой строке , p[i] = new char[strlen(q[i]) + 1]; Вот именно , почему возникает вопрос? Ведб в 1 цикле, должно пропускаться . При этом если я делаю так
То ошибка возникает тут - for ( int i = 0 ; i < N ; i++ ) delete[] q[i]; |
||||
|
|||||
| Soah |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
если пока в уме решать такие задачи не получается, возьмите ручку и решайте на бумажке допустим p[0] -> "123" p[1] -> "456" p[2] -> "789" p[3] -> "000" value = 1
после этого кода q[0] -> "123" q[1] -> ??? q[2] -> "789" как Вы думаете это правильно? вроде бы алгоритм правильный, сейчас времени проверить нет, только Вы делаете лишнюю работу зачем создавать копию массива q, если можно присвоить p указатель на ту память которая уже есть
|
||||||
|
|||||||
| djezul |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 13.6.2009 Где: Украина , Донецк Репутация: нет Всего: нет |
||||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
а зачем удалять q? смотрите, p ->(указывает) на массив p[0]..p[3] p[0] -> "123" p[1] -> "456" p[2] -> "789" p[3] -> "000" value = 1 формируем q q[0] -> "123" q[1] -> "789" q[2] -> "000" удаляем память под строки p[0]..p[4] и массив p p = q, означает что p будет указывать туда где и q, то есть на массив строк("123", "789", "000") |
|||
|
||||
| djezul |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 13.6.2009 Где: Украина , Донецк Репутация: нет Всего: нет |
Но ведь при 2 вызове функции , разве q сформируется правильно , если не отчистить занимаемою им память? Ведь возможно у меня будет p[0] -> "123" p[1] -> "456" p[2] -> "789" p[3] -> "000" Я удалю , останется q[0] -> "123" q[1] -> "789" q[2] -> "000" Я захочу добавить ещё 2 q[0] -> "123" q[1] -> "789" q[2] -> "000" q[3] -> "541" q[4] -> "000" И снова захочу удалить 5 элемент , но ведб в таком случае , функция правильно не отработает ? Или я что то не так понимаю? |
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
||||
|
||||
| djezul |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 13.6.2009 Где: Украина , Донецк Репутация: нет Всего: нет |
||||
|
||||
| ller |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.8.2008 Где: г. Таганрог Репутация: 2 Всего: 4 |
Вопрос по теме. Не буду новую заводить.
Есть некоторый класс
Я понимаю, что так делать нельзя, но есть какие то пути как сделать указание элемента в виде масива n-мерного. Один из вариантов как я вижу, это использовать
Но хочется сделать велосипед, в качестве получения опыта Это сообщение отредактировал(а) ller - 14.7.2009, 21:32 |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |