Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 936
от 15.12.2007, 01:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 475, Экспертов: 58
В номере:Вопросов: 4, Ответов: 6


Вопрос № 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 & );
Очень прошу ответить на эти вопросы.
Заранее блпгодарю!

Приложение:

Отправлен: 09.12.2007, 05:14
Вопрос задал: Глымов Антип (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лясин Александр Владимирович
Здравствуйте, Глымов Антип!
Вам непонятны первые два вопроса:
здесь
mystring &operator = ( const char * );
и здесь
mystring &operator = ( const mystring & );
потому, что Вы видимо не прочли (или прочли невнимательно) материал "Перегрузка операторов".
В данном коде перегрузка оператора "=" нужна для того, чтобы Ваш класс mystring
мог использовать конструкции типа
mystring str1, str2;
str1="123";
str2=str1;
По поводу счётчика n - если вы внимательно разбирали код, то заметили, что в конструкторе копирования

mystring :: mystring( const mystring &x )
{
x.p->n++;

p = x.p;
}

НЕ происходит динамического выделения памяти, вместо этого p = x.p;
Теперь , к примеру, представьте себе, что в каком либо локальном коде
мы создаёт новую строку с помощь коструктора копирования:
str1="123";
mystring str2(str1);
// это один из примеров
как Вы наверное знаете, в случае "выхода" выполнения программы из какого либо блока или функции, все объявленные статически в нём объекты (без помощи операции new или malloc и т.п.) уничтожаются.

Теперь представьте, что произойдёт в таком коде:

mystring str1="123";
...
...
void somefunc () {
mystring str2="2345";
str1=str2;
}

При выходе из ф-ии 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

UINT GetItemState(
HTREEITEM hItem,
UINT nStateMask
) const;

В приложении пример!Описания всех остальных маскок вы найдете в 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!
Довольно частый вопрос на портале. Посоветую почитать здесь:

Почему вместо русских букв в консольном приложении выводится мусор?rsdn.ru)
Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.65 от 04.12.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное