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

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


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

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

Выпуск № 608
от 12.12.2006, 05:35

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


Вопрос № 65799: Здравствуйте! Мне вот что не понятно. Везде пишут, что в С++ проще работать с довыделением памяти. Но по сути реализация выходит такая же: создаётся динамическая переменная большей памяти, туда всё перезаписывается, а прежняя удаляется. Ведь так можн...
Вопрос № 65832: Мне бы хотелось узнать мнение об таких авторах по С++ как Подбельский, Шмилдт и Давыдов. Что лучше для начинающего?...
Вопрос № 65835: Как считать массив из файла. Массив одномерный A[16]. Знаю, что циклом. Каким лучше и меньше будет использовать памяти? И есть ли другие способы считывать без использования цикла?...
Вопрос № 65873: Здравствуйте эксперты! По нужде да и для ощего развития надо освоить C++, поиски литературы и сайтов на эту тему ничего не дал. Везде есть ссылки на освоение Visual c++ и Borland (как создать окно, для чайников), а ресурсы где подробно всё разжёв...

Вопрос № 65.799
Здравствуйте! Мне вот что не понятно. Везде пишут, что в С++ проще работать с довыделением памяти. Но по сути реализация выходит такая же: создаётся динамическая переменная большей памяти, туда всё перезаписывается, а прежняя удаляется. Ведь так можно сделать и в других языках (я писала на Pascal)... Поэтому мне думается, может я делаю что-то не так... Подскажите алгоритм: если я описываю динамический массив как
тип** a (по-другому задать не получится, т.к. я использую его внутри структуры узла дерева в качестве массива ссылок на потомков, количество которых неограничено),
то потом сначала выделяю память под ссылку
a=new тип*
и под первый элемент
a[0]=new тип.
Но если мне позже нужно создать следующий элемент a[1], то под ссылку надо выделять память уже как
a=new тип* [2],
то есть создавать новую переменную и переписывать элементы туда, а потом удалять старую.
Но если алгоритм такой, то в чём разница?
Отправлен: 06.12.2006, 15:38
Вопрос задала: Verena (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Хватов Сергей
Здравствуйте, Verena!

Вам действительно интересно, почему так?

Ну, попробую объяснить - часто невозможно изменить размер объекта, не переместив его в другое место (вообще-то это при наличии mmu реализовать можно, только слишком дорого получится) А перемещение ведёт к проблемам - в программе могут быть на него ссылки, которые придётся корректировать.

Но если вам это для дела нужно - то можно не углубляться в реализацию, а использовать готовые abstract containers - std::vector или даже std::map (он как раз через btree реализован)

Ответ отправил: Хватов Сергей (статус: 10-ый класс)
Ответ отправлен: 06.12.2006, 16:03


Вопрос № 65.832
Мне бы хотелось узнать мнение об таких авторах по С++ как Подбельский, Шмилдт и Давыдов. Что лучше для начинающего?
Отправлен: 06.12.2006, 19:31
Вопрос задал: Spenser (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Torsten
Здравствуйте, Spenser!
Подбельского и Шилдта (не Шмилдта) читал, оба пишут хорошо.
У Шилдта сделано в виде справочника, у Подбельского в виде учебника.
Я всегда же предпочитаю справочники, т.к. можно быстро найти то что нужно.
Да и Шилдта многие признают отличным автором, еще один плюс в его пользу, это тоже была моя первая книга, когда я начал изучать С/С++.
Но и Подбельский тоже хорошо пишет для новичком, так что рекомендую между этими авторами выбирать.

Про Давыдова первый раз слышу.
---------
#define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 3-ий класс)
Ответ отправлен: 06.12.2006, 19:42
Оценка за ответ: 5

Отвечает: din
Здравствуйте, Spenser!
Я думаю, что Липман самый раз для нацинающих. Книжка так и называется "С++ для начинающих". У меня где-то была в электронном виде. Надо поискать.
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 06.12.2006, 19:47
Оценка за ответ: 5

Отвечает: Терсков Сергей
Здравствуйте, Spenser!

Не знаю насчет Давыдова, но вот двое других... По Подбельскому я изучал C и скажу, что для начинающего этот автор очень неплох (правда в примерах программ у него много математических расчетов). Герберт Шилдт написал книги по-моему по всем известным языкам :). При этом пишет он практически везде одинаково. Я читал его книги по Java и C#. Для начинающих это самое-то, он все понятно объясняет и приводит немало примеров, так что я бы посоветовал именно его.
Ответ отправил: Терсков Сергей (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 02:41
Оценка за ответ: 5


Вопрос № 65.835
Как считать массив из файла. Массив одномерный A[16]. Знаю, что циклом. Каким лучше и меньше будет использовать памяти? И есть ли другие способы считывать без использования цикла?
Отправлен: 06.12.2006, 19:41
Вопрос задал: Spenser (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ross
Здравствуйте, Spenser!

Здесь все зависит от того, в каком виде массив записан в файл. Если это обычный ASCII - файл, в котором отдельные числа разделены пробелами, то можно например использовать для этого класс ifstream и цикл for(while). Если файл бинарный, можно использовать, например, стандартные функции WinAPI и считывать весь массив целиком. Код, реализующий оба способа - в приложении

Приложение:

Ответ отправил: Ross (статус: 3-ий класс)
Ответ отправлен: 06.12.2006, 20:24
Оценка за ответ: 5

Отвечает: Терсков Сергей
Здравствуйте, Spenser!

Непонятно какой тип данных у вас в массиве и какой формат файла который вы собираетесь считывать. По-поводу цикла - можно использовать любой какой по душе, например:

for(int i=0; i<16; i++) {

fscanf(...);
}

или

while(fscanf(...) != EOF) {
}

А читать файлы можно и без цикла, т.е. за раз считать его в память. Но разбирать считанные данные в массив все равно придется в цикле.
Ответ отправил: Терсков Сергей (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 02:39
Оценка за ответ: 5


Вопрос № 65.873
Здравствуйте эксперты!
По нужде да и для ощего развития надо освоить C++, поиски литературы и сайтов на эту тему ничего не дал. Везде есть ссылки на освоение Visual c++ и Borland (как создать окно, для чайников), а ресурсы где подробно всё разжёванно мне не попадались. Мой опыт в программировании сводиться к знаниям PHP и HTML. Хотел спросить Ваш совет по поводу литературы которую стоит приобрести для самостоятельного освоения языка, конкретно меня интересуют книги по принципам программирования, структуре языка и собственно справочники функций. Буду рад и ссылкам на ресурсы Интернет.
Отправлен: 06.12.2006, 23:36
Вопрос задал: Cimus (статус: 9-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: UnRe@l
Здравствуйте, Cimus!
Ресурсы Интернет:
http://rsdn.ru/
http://www.codenet.ru/progr/cpp/

Что же касается литературы, то её можно выбрать на Озоне http://www.ozon.ru/ .
---------
Cogito, ergo sum (c) R. Descartes (1596-1650)
Ответ отправил: UnRe@l (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 03:42
Оценка за ответ: 5

Отвечает: Mystic
Здравствуйте, Cimus!
Я бы посоветовал книгу "Философия С++". Авторы: Брюс Эккель и Чак Эллисон. Книга в двух томах. Однако материал немного трудноват, если не знать хотя бы основы.
Ответ отправил: Mystic (статус: 2-ой класс)
Ответ отправлен: 07.12.2006, 15:35
Оценка за ответ: 5
Комментарий оценки:
Да, действительно отличный выбор, купил два тома и ещё справочник Рэй Лишнера.


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное