Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Обучение и начало програмирования на С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Открыть новую тему     Написать ответ в эту тему

DeviL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zingerrr
точно подмечено!    
тока где такую найти  

Всего записей: 268 | Зарегистр. 24-10-2003 | Отправлено: 15:11 25-07-2005
dantess



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TheChampion
 

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

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

Всего записей: 21 | Зарегистр. 04-05-2004 | Отправлено: 18:36 25-07-2005
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zingerrr

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

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

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

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

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

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

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 20:22 25-07-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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();
}
 

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 20:59 25-07-2005 | Исправлено: distance, 21:01 25-07-2005
dantess



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
distance
 

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

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

Всего записей: 21 | Зарегистр. 04-05-2004 | Отправлено: 00:18 26-07-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dantess

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

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

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

 
А коды символов - это не данные?

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 02:41 26-07-2005
dantess



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
distance
 

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

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

Всего записей: 21 | Зарегистр. 04-05-2004 | Отправлено: 09:21 26-07-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dantess
Чтобы преобразовать строку в число есть функция std::atoi(). Как разбить строку чисел на отдельные элементы я уже описал выше.
 
Добавлено:
Я правильно понимаю, что вводится матрица, элементы которой разделены запятыми?

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 10:00 26-07-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd

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

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

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

с++ скорее среднего уровня со встроенной возможностью разработки высокоуровневых средств. К высокоуровневым можно отнести java, delphi, d (что-то типа с++ со встроенным stl) и др. Именно эта особенность языка и привела к необходимости создания stl, boost и др. библиотек являюхся или претендующих на стандарт

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 16:05 26-07-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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')
        но в приличном обществе такой код лучше не показывать
    */
}
 


Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:29 26-07-2005
dantess



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TheChampion
 

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

 
Именно так.
 
distance
 

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

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

Всего записей: 21 | Зарегистр. 04-05-2004 | Отправлено: 18:24 27-07-2005
sergey_ladia



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем в помощь даю ссылку на огромное к-во статей по C++ - www.ladia.ru в разделе программирование.

Всего записей: 7 | Зарегистр. 31-05-2005 | Отправлено: 11:18 28-07-2005
Larry



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Хочу перейти с програмирования в Delphi на С++. Подскажите, какую среду лучше выбрать - Microsoft/Visual/Borland?
 
Заранее благодарен...

Всего записей: 3148 | Зарегистр. 20-07-2005 | Отправлено: 16:34 29-07-2005
sk Asgard



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Если с дельфей, то Borland

Всего записей: 100 | Зарегистр. 13-01-2005 | Отправлено: 16:44 29-07-2005
Larry



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
sk Asgard, я сначала тоже так думал, но слышал много нехороших отзывов о данном продукте. Я думаю, что хорошо сумею приспособиться под новый язык, и хотел бы выбрать продукт, не обращая внимания на простоту перехода с языка Delphi.


----------
Never put off till tomorrow what can be put off till day after tomorrow just as well

Всего записей: 3148 | Зарегистр. 20-07-2005 | Отправлено: 16:46 29-07-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Larry
Borland труп. Выбирай MSVS 2005 .NET.

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 17:39 29-07-2005
Larry



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TheChampion, спасибо за совет. Если можно, еще один вопрос: какую версию MSVS лучше использовать? Например, Delphi я использую версии 7, потому как всякие прибамбасы с NET не не нужны, потому как мне приходиться кодить сугубо специфический софт. Главное, чтобы среда была не сильно накрученная, но поддерживала базовые возможности.
 
Заранее благодарен за ответ...


----------
Never put off till tomorrow what can be put off till day after tomorrow just as well

Всего записей: 3148 | Зарегистр. 20-07-2005 | Отправлено: 20:23 29-07-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Larry
Выбирай минимум 2003 .NET. Полностью (или почти полностью) поддерживает стандарт ISO/IEC 14882 Programming Languages: C++. Ну и еще есть Managed C++ --- "модернизация" C++ и превращение его в C#.
 
Среди возможностей есть отладчик, кодогенератор, MSDN, вкладки туда-сюда выезжают. Единственная проблема с вкладкой index.
 
И главное: НИ В КОЕМ СЛУЧАЕ НЕ БЕРИ MSVS 6!!!

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 20:47 29-07-2005
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TheChampion

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

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

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 20:53 29-07-2005
Larry



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
OdesitVadim,

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

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


----------
Never put off till tomorrow what can be put off till day after tomorrow just as well

Всего записей: 3148 | Зарегистр. 20-07-2005 | Отправлено: 21:20 29-07-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Обучение и начало програмирования на С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru