Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Обучение и начало програмирования на С++

Автор: DeviL
Дата сообщения: 25.07.2005 14:11
Zingerrr
точно подмечено!
тока где такую найти
Автор: dantess
Дата сообщения: 25.07.2005 17:36
TheChampion


Цитата:
Если же размер строки (т. е. количество запятых) заранее неизвестно, то делаем более хитро:


Огромное спасибо.
С этой часть я приблизительно представлял как справиться, но основное затруднение в следующем:

Как присвоить полученные таким образом данные (т.е. содержащиеся в массиве char) многомерному массиву int?
У меня ни в какую не получается - вместо данных в массив попадают ANSI коды символов..
Автор: vserd
Дата сообщения: 25.07.2005 19:22
Zingerrr

Цитата:
Мне кажется многим была интересна книга типа "конструктора lego" -где бы автор вначале книги поставил достаточно сложную но интересную задачу , а потом на протяжение книги показал как ее решить(двумя тремя способами). Раскрыл бы свойства языка, провел бы читателей от разработки алгоритма до написания кода ....

Ах, молодость.....
На самом деле, более менее приличный проект интересный большинству читателей при документировании намного превышает объем книги-учебника.
Вот и авторы извращаются на банальных примерах :(((
Тут как всегда сталкиваются две противоположности. Одна это если нет реальной задачи, изучить язык практически не возможно (интерес быстро пропадает), вторая это выше описанная, реальные решения выходят за рамки книги учебника.
TheChampion

Цитата:

Код:type my_enum = (First, Second, Third);
my_set = set of my_enum;

Ты прав, но тут явно мой глюк с терминогогией, и в добавок ко всему, к сожалению, имеющиеся средства языка не позволяют использовать прошлый опыт, даже втой-же части Enum. В Паскале есть функции которые позволяют с ним работать, в С++ нет, или они не поисаны в моем учебнике :(

WiseAlex

Цитата:
с++ не является высокоуровневым языком программирования

хм. судя по рекламе он именно так и позиционируется. Как высокоуровневый :((((,
видно уровень этой высокоуровнивости разный :)))
Другой разговор что типы которые в других языках являются базовыми, в С++ реализованы в виде классов и других вывертов компилятора. Которые в свою очередь слабо описаны в большенстве учебной литиратуры, в силу именно учебности. И получается как-бы провал, если изучать с нуля, тогда еще ничего, все идет эволюционно, а когда с другого языка, тогда через ж... потому что ощущаешь что тут намного серьезнее чем описано, но почему именно так не описано. И все эти выверты описаны в лучшем случае в приложении, в худшем в другой книге которой у тебя нет.
Например многие учебники по C++ используют cin/cout которые по своей сути объекты с довольно сложной логикой. Получается что все примеры простые из-за неявных преобразований, но когда пытаешся сделать тоже самое без этих объектов, оказывается что все очень не просто :((

В моем случае я пытаюсь модифицировать уже существующий проект, но спеца по С++ под рукой нет, а значит все непонятки даются с гораздо большими усилиями, чем при разработке с нуля. :((((
Автор: distance
Дата сообщения: 25.07.2005 19:59
dantess
если не боишься завязки на win32 и ado, то...


Код:
#import "D:\program files\common files\system\ado\msado21.tlb" named_guids

void retrieve_data()
{
ADODB::_ConnectionPtr spConnection;
ADODB::_RecordsetPtr spRecordset;

CoInitialize(NULL);
try
{
spConnection.CreateInstance(__uuidof(ADODB::Connection));
spRecordset.CreateInstance(__uuidof(ADODB::Recordset));
spConnection->Open(L"DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ=C:\\Data;", L"", L"", 0);
spRecordset->Open(L"SELECT * FROM [raw_data.txt]", spConnection.GetInterfacePtr(), ADODB::adOpenDynamic, ADODB::adLockOptimistic, ADODB::adCmdText);
// вытаскиваешь данные из рекордсета любым удобным способом
}
catch(_com_error e)
{
// process COM error
}

CoUninitialize();
}
Автор: dantess
Дата сообщения: 25.07.2005 23:18
distance


Цитата:
если не боишься завязки на win32 и ado, то...


Спасибо, но, может, я чего не понял, конечно, но на последний вопрос ответа я не нашел...

Еще раз мой вопрос:

Как присвоить полученные таким образом данные (т.е. содержащиеся в массиве char) многомерному массиву int?
У меня ни в какую не получается - вместо данных в массив попадают ANSI коды символов..
Автор: distance
Дата сообщения: 26.07.2005 01:41
dantess

Цитата:
Еще раз мой вопрос:

Как присвоить полученные таким образом данные (т.е. содержащиеся в массиве char) многомерному массиву int?


никак, очевидно. Уж не знаю, как ты себе представляешь операцию присвоения много(сколько?)мерному массиву данных, содержащихся в одомерном массиве char, но для меня это выглядит полной бессмыслицей.


Цитата:
У меня ни в какую не получается - вместо данных в массив попадают ANSI коды символов..


А коды символов - это не данные?
Автор: dantess
Дата сообщения: 26.07.2005 08:21
distance


Цитата:
никак, очевидно. Уж не знаю, как ты себе представляешь операцию присвоения много(сколько?)мерному массиву данных, содержащихся в одомерном массиве char, но для меня это выглядит полной бессмыслицей.


Согласен, тупо сформулировал...
В многомерный - т.е. построчно..
Соответственно, массивы char содержат по 1 строке...

Но пусть даже так - пусть даже речь идет про одномерные массивы, но все-таки - как?
Массив char в массив int...

Коды символов, конечно, данные, но не они мне нужны...
Автор: TheChampion
Дата сообщения: 26.07.2005 09:00
dantess
Чтобы преобразовать строку в число есть функция std::atoi(). Как разбить строку чисел на отдельные элементы я уже описал выше.

Добавлено:
Я правильно понимаю, что вводится матрица, элементы которой разделены запятыми?
Автор: WiseAlex
Дата сообщения: 26.07.2005 15:05
vserd

Цитата:
Например многие учебники по C++ используют cin/cout которые по своей сути объекты с довольно сложной логикой

Вот именно - на то чтобы понять как работает "hello world" у меня ушло около года (т.е. тут нужны сразу понимание шаблонов, перегрузки операторов и т.д.).

Цитата:
позиционируется. Как высокоуровневый (((,

с++ скорее среднего уровня со встроенной возможностью разработки высокоуровневых средств. К высокоуровневым можно отнести java, delphi, d (что-то типа с++ со встроенным stl) и др. Именно эта особенность языка и привела к необходимости создания stl, boost и др. библиотек являюхся или претендующих на стандарт
Автор: distance
Дата сообщения: 26.07.2005 16:29
dantess
у тебя размерность массива известна? 2d?
соответственно массив исходных данных должен быть размером H*W

преобразование строкового представления числа в само число делается просто:
char code = *string_ptr - '0'; // просто вычитаем "базу" - код нуля

тогда, если не использовать std-классы, типа std::vector:


Код:
const int H = 10; // размерность тебе как-то тоже придется получить - либо из исходного файла, либо другим способом
const int W = 10;

int dest_arr[H][W];
char* src_data;

src_data = ... // получаем массив символов (raw-data)
char* string_ptr = src_data; // указатель, с которого будем "снимать" данные

// инициализируем массив полученными данными
for(int j=0; j<H; j++)
for(int i=0; i<W; i++)
{
dest_arr[j][i] = (int)(*string_ptr - '0');
string_ptr++;

/*
можно написать и в стиле CoolSysop'а, в одну строчку:
dest_arr[j][i] = (int)(*string_ptr++ - '0')
но в приличном обществе такой код лучше не показывать
*/
}
Автор: dantess
Дата сообщения: 27.07.2005 17:24
TheChampion


Цитата:
Я правильно понимаю, что вводится матрица, элементы которой разделены запятыми?


Именно так.

distance


Цитата:
у тебя размерность массива известна? 2d?


Да, 2d...
За код спасибо - пока ближе всего к тому что хотелось бы...
Сейчас попробую...



Добавлено:
distance, огромное спасибо!
Именно то что нужно!!
Автор: sergey_ladia
Дата сообщения: 28.07.2005 10:18
Всем в помощь даю ссылку на огромное к-во статей по C++ - www.ladia.ru в разделе программирование.
Автор: Larry
Дата сообщения: 29.07.2005 15:34
Хочу перейти с програмирования в Delphi на С++. Подскажите, какую среду лучше выбрать - Microsoft/Visual/Borland?

Заранее благодарен...
Автор: sk Asgard
Дата сообщения: 29.07.2005 15:44
Если с дельфей, то Borland
Автор: Larry
Дата сообщения: 29.07.2005 15:46
sk Asgard, я сначала тоже так думал, но слышал много нехороших отзывов о данном продукте. Я думаю, что хорошо сумею приспособиться под новый язык, и хотел бы выбрать продукт, не обращая внимания на простоту перехода с языка Delphi.
Автор: TheChampion
Дата сообщения: 29.07.2005 16:39
Larry
Borland труп. Выбирай MSVS 2005 .NET.
Автор: Larry
Дата сообщения: 29.07.2005 19:23
TheChampion, спасибо за совет. Если можно, еще один вопрос: какую версию MSVS лучше использовать? Например, Delphi я использую версии 7, потому как всякие прибамбасы с NET не не нужны, потому как мне приходиться кодить сугубо специфический софт. Главное, чтобы среда была не сильно накрученная, но поддерживала базовые возможности.

Заранее благодарен за ответ...
Автор: TheChampion
Дата сообщения: 29.07.2005 19:47
Larry
Выбирай минимум 2003 .NET. Полностью (или почти полностью) поддерживает стандарт ISO/IEC 14882 Programming Languages: C++. Ну и еще есть Managed C++ --- "модернизация" C++ и превращение его в C#.

Среди возможностей есть отладчик, кодогенератор, MSDN, вкладки туда-сюда выезжают. Единственная проблема с вкладкой index.

И главное: НИ В КОЕМ СЛУЧАЕ НЕ БЕРИ MSVS 6!!!
Автор: OdesitVadim
Дата сообщения: 29.07.2005 19:53
TheChampion

Цитата:
Borland труп. Выбирай MSVS 2005 .NET.

Твое мнение о Делфи мы знаем.
Larry
Почему такой резкий переход? Учти, что перейдя на MSVS 2005 .NET, тебе прийдётся много переучить. Ну логика у них не такая. А если кто-то скажет, что на Делфи получаются плохие проги - плюнь в лицо (Да простит меня модератор), так как не от компилятора, а от кодера зависит качество кода.
Автор: Larry
Дата сообщения: 29.07.2005 20:20
OdesitVadim,

Цитата:
А если кто-то скажет, что на Делфи получаются плохие проги - плюнь в лицо

Мне без разницы чужое мнение. Просто самому захотелось поглубже копнуть в теории программирования.

TheChampion, спасибо за помощь.
Автор: OdesitVadim
Дата сообщения: 29.07.2005 20:41
Larry

Цитата:
Просто самому захотелось поглубже копнуть в теории программирования.

Тогда тебе нужно алгоритмы читать надо. А начём писать - без разницы, хоть на Беёсике для Спектрума.А если с виндой хоч дело иметь - тогда Руссиновича и Рихтера почитать не мешает, но тут чу-чуть С нужно знать.
Автор: OtD
Дата сообщения: 29.07.2005 22:58
vserd

Цитата:
ALL
вопрос по перечеслениям (enum)
Есть ли возможность определить последнее (верхнее) значение перечисления, и можно -ли использовать их в цикле?

Каждый по своему видит и использует инструменты языка, лично я смотрю на enum как на упрощённую возможность создания констант.
Например:

Код:
// В стиле С:
#define CONSTANT_01 1
#define CONSTANT_02 2
#define CONSTANT_03 3
#define CONSTANT_04 4

// В стиле С++:
const int CONSTANT_001 = 1;
const int CONSTANT_002 = 2;
const int CONSTANT_003 = 3;
const int CONSTANT_004 = 4;

// В стиле С++ через enum (перечисление):
enum{
CONSTANT_1 = 1,
CONSTANT_2,
CONSTANT_3,
CONSTANT_4,
//
};
Автор: TheChampion
Дата сообщения: 30.07.2005 16:51
OdesitVadim

Цитата:
Твое мнение о Делфи мы знаем.

Для тех, кто в танке: Borland C++Builder МЕРТВ!!! Сравните Delphi 2005 vs Builder 6. Делайте выводы.
Автор: OtD
Дата сообщения: 30.07.2005 23:51
TheChampion

Цитата:
Borland C++Builder МЕРТВ!!!

Разговор ни о чём. Где? Что? Причина?
А то, как в Ералаше "Смотреть противно", всё это выглядет.
Автор: TheChampion
Дата сообщения: 31.07.2005 07:28
OtD
Объясняю: релиз BCB6 относится еще к 2002 году! С тех пор --- тишина. Или вы думаете, что со времен Delphi 6 до настоящего времени ничего не изменилось? Тогда на кой выпустили Delphi 2005? Типа, чтобы Мелкософт со своей MSVS 2005 не обогнал?

Еще скажу про скорость компиляции: MS делает Borland в этом плане в 5(!) раз. 20 с против 4 с вам ни о чем не говорит? А вот мой клиент БД, который состоял из двух десяткой модулей, на BCB перестраивался полностью аж 30 с! Тот же клиент, переписанный на для .NET --- всего лишь 6 с! А если придется компилировать гораздо более сложные вещи, например, игры, что идут на DVD? Мой клиент вместе со всеми поставляемыми библиотеками (в эпоху Борланда) весил 20 МБ.

А еще в MSVS есть MSDN. Как кто-то из местных ораторов сказал, "чудная вещь", с ударением на первом слоге! И в самом деле, там есть все. Что может противопоставить Borland?

Builder не развивается и не обновляется, потому и мертв. Теперь понятно? И "Ералаш" тут совершенно не причем.
Автор: Larry
Дата сообщения: 31.07.2005 09:16
А на скольки дисках распространяется полный вариант MSVS 2005 .NET (чтобы какую-нить лажу не купить)?
Автор: TheChampion
Дата сообщения: 31.07.2005 13:23
TheChampion
Пока есть только MSVS 2005 .NET Beta 2. На одном DVD. Еще 2 --- обучение, но их может и не быть.
Автор: Xarde
Дата сообщения: 31.07.2005 23:55
TheChampion

Цитата:
Объясняю: релиз BCB6 относится еще к 2002 году! С тех пор --- тишина. Или вы думаете, что со времен Delphi 6 до настоящего времени ничего не изменилось? Тогда на кой выпустили Delphi 2005? Типа, чтобы Мелкософт со своей MSVS 2005 не обогнал?

Странно, что тебе неизвестны следующие факты:
1. ВСВ6 _не_ последняя версия билдера. Лично я видел еще и BuilderX. ИМХО, гадость та еще, но при желании работать можно.
2. Delphi 2005 выпускается Microsoft. Причем, если я не ошибаюсь, сейчас она еще бэта. Есть Delphi 8 (2003, под .Net).
3. На территории бывшего СССР говорить о смерти билдера пока рано - к нему и к дельфи наши люди привыкли основательно и он еще долго будет использоваться в разработке.
Автор: TheChampion
Дата сообщения: 01.08.2005 07:10
Xarde

Цитата:
ВСВ6 _не_ последняя версия билдера

Только вот что в нем осталось от "оригинального" Builder? Так, пародия на CppDev. Где возможности быренько набросать контролов на формочку?


Цитата:
Delphi 2005 выпускается Microsoft

Вот это новость! Стало быть, все в мире от Майка! Тогда самое время петь заупокойную и отходную по борланду.


Цитата:
к нему и к дельфи наши люди привыкли основательно

Кто? Корпорация Парус? Они нам не указ. Я еще не видел игр, написанных на этом. А вот на MSVS видел. Школьники, изучающие паскаль, --- это не все.
Автор: Larry
Дата сообщения: 01.08.2005 07:54
Xarde,

Цитата:
Delphi 2005 выпускается Microsoft

Ой ли.

Страницы: 12345678910111213141516171819202122

Предыдущая тема: DELPHI. Счетчик ячеек со значенями, значений ячеек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.