Вопрос № 113044: Здравствуйте!
Задали мне разобрать класс String описаный в книге Бьерна Страуструпа "Язык программирования С++". В приложении-оригинале взятом из книги я написал коментарии (мои вопросы помечены крупным шрифтом)- что именно непонятно.<b...Вопрос № 113062: В Visual C++ 6 для CTreeCtrl нужно узнать состояние узла: Expanded или Collapsed. Подскажите плз как это сделать проще. Спасибо....Вопрос № 113098: Здравствуйте у меня
вопрос я работаю в VS C++ 6.0
что мне необходимо сделать чтобы на выводе консольного приложения писались русские буквы.
Заранее спасибо!...Вопрос № 113145: Здравствуйте.
Возник следующий вопрос.
Нужно написать программу умножения симметричной матрицы в профильном формате на вектор.
Профильный формат подразумевает массив для элементов диагонали, массив где храниться профиль верхнего треугольн...
Вопрос № 113.044
Здравствуйте!
Задали мне разобрать класс String описаный в книге Бьерна Страуструпа "Язык программирования С++". В приложении-оригинале взятом из книги я написал коментарии (мои вопросы помечены крупным шрифтом)- что именно непонятно.
А именно функции:
mystring &operator = ( const char * );
mystring &operator = ( const mystring & );
Очень прошу ответить на эти вопросы.
Заранее блпгодарю!
Отвечает: Лясин Александр Владимирович
Здравствуйте, Глымов Антип!
Вам непонятны первые два вопроса:
здесь
mystring &operator = ( const char * );
и здесь
mystring &operator = ( const mystring & );
потому, что Вы видимо не прочли (или прочли невнимательно) материал "Перегрузка операторов".
В данном коде перегрузка оператора "=" нужна для того, чтобы Ваш класс mystring
мог использовать конструкции типа
mystring str1, str2;
str1="123";
str2=str1;
По поводу счётчика n - если вы внимательно разбирали код, то заметили, что в конструкторе копирования
НЕ происходит динамического выделения памяти, вместо этого p = x.p;
Теперь , к примеру, представьте себе, что в каком либо локальном коде
мы создаёт новую строку с помощь коструктора копирования:
str1="123";
mystring str2(str1);
// это один из примеров
как Вы наверное знаете, в случае "выхода" выполнения программы из какого либо блока или функции, все объявленные статически в нём объекты (без помощи операции new или malloc и т.п.) уничтожаются.
При выходе из ф-ии str2 будет уничтожен (если не будет счётчика ссылок n), и указатель p на структуру
srep в str1 будет ссылатся неизвестно куда. И при выполнении программы возникнет исключительная ситуация. Это если говорить максимально простым языком. Примеров можно привести много. И у Страуструпа об этом должно быть написано и разобрано.
Ответ отправил: Лясин Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 09.12.2007, 09:56 Оценка за ответ: 5
Вопрос № 113.062
В Visual C++ 6 для CTreeCtrl нужно узнать состояние узла: Expanded или Collapsed. Подскажите плз как это сделать проще. Спасибо.
Отправлен: 09.12.2007, 10:53
Вопрос задал: PostM (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: CruelHity
Здравствуйте, PostM!
Вы можете проверить состония элемнета с помощью метода GetItemState
В приложении пример!Описания всех остальных маскок вы найдете в MSDN!
Удачи!
Приложение:
Ответ отправил: CruelHity (статус: 6-ой класс)
Ответ отправлен: 09.12.2007, 13:40 Оценка за ответ: 5 Комментарий оценки: БОЛЬШОЕ спасибо!
Вопрос № 113.098
Здравствуйте у меня вопрос я работаю в VS C++ 6.0
что мне необходимо сделать чтобы на выводе консольного приложения писались русские буквы.
Заранее спасибо!
Отправлен: 09.12.2007, 16:48
Вопрос задал: 991kiram (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: CruelHity
Здравствуйте, 991kiram!
Один из вариантов это перекодировать выводимое сообщения!
В приложении функции которые делают перекодировку! Удачи!Если что спрашивайте!
Приложение:
Ответ отправил: CruelHity (статус: 6-ой класс)
Ответ отправлен: 09.12.2007, 17:38 Оценка за ответ: 5 Комментарий оценки: спасибо
Отвечает: kool
Здравствуйте, 991kiram!
Использовать функцию CharToOem
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 09.12.2007, 20:06 Оценка за ответ: 5
Отвечает: Терсков Сергей
Здравствуйте, 991kiram! Довольно частый вопрос на портале. Посоветую почитать здесь:
Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 12.12.2007, 03:16
Вопрос № 113.145
Здравствуйте.
Возник следующий вопрос.
Нужно написать программу умножения симметричной матрицы в профильном формате на вектор.
Профильный формат подразумевает массив для элементов диагонали, массив где храниться профиль верхнего треугольника, и массив в котором храниться кол-во элементов в профиле i-ой строки. Ну, я надеюсь, что формат известный, и деталльно расписывать не имеет смысла.
Нижний треугольник не храниться, потому что матрица симметричная.
Спасибо.
Отправлен: 09.12.2007, 21:58
Вопрос задал: Petrovich (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Терсков Сергей
Здравствуйте, Petrovich!
Формат не такой известный, но найти его описание труда не составило. Например здесь. Из полученных сведений составил код в находящийся в приложении. Профильная матрица реализована в виде класса и главной проблемой было реализовать метод get(int row, int col), т.е. взятие элемента по обычным индексам. Ну а все остальное уже было делом техники. Подробнее смотрите код в приложении.
Приложение:
Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 12.12.2007, 04:48 Оценка за ответ: 5