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

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

Модерирует : 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

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

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопросы по программированию на C/С++

 
  • Справочники, книги
  • Выбор IDE (среды программирования)
     
    Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

    Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

    Прежде чем просить помощи в задании...
    Если позарез надо и вы даже готовы заплатить

    Как правильно задавать вопросы, если вы хотите получить ответ.

    Полезные ссылки:
    C++(eng)

  • Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 13:37 06-05-2004 | Исправлено: AZJIO, 19:45 12-05-2014
    akaGM

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

    Цитата:
    это называется "перегрузка функций"

    во-во, именно так это и называется...
     
    т.е. при
    template <typename T> T min(const T& l, const T& r) { return l < r ? l : r; }
     
    вызовы
    rmin = min(r1, r2);
    imin = min(i1, i2);
    будут корректны?
     
    где эта зелёная фигня (относительно реализаций) должна располагаться?
     

    Цитата:
    для простых типов параметры не обязательно передавать по сылке

    а мне нада!
    тогда как-то вот так?
    template <typename T> T min(T& l, const T& r) { return l < r ? l : r; }
    int min(int *l, int r) { *l < r ? *l : r; return *l; }
     
    или как?
     

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

    да? тогда шаблоны немножко подождут...
     
    -----
    э-э-э, обожди, ты меня совсем загипнотизировал...
     
    int myProc(int i);
    int myProc(double r1, r2, *r3);
     
    вот это как перегрузить?

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 16:15 24-03-2008 | Исправлено: akaGM, 16:41 24-03-2008
    distance

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

    Цитата:
    где эта зелёная фигня (относительно реализаций) должна располагаться?

    зелёная фигня должна быть в заголовочном файле
     

    Цитата:
    а мне нада!

    если надо по ссылке, то в исходной шаблонной функции так и происходит
     

    Цитата:
    да? тогда шаблоны немножко подождут...

    изучить из всё же полезно, потому как ту функцию min можно специализировать типом int, и тогда получится другая реализация
    template<int> int min(int i, int r) { return l < r ? l : r; }
     

    Цитата:
    э-э-э, обожди, ты меня совсем загипнотизировал...

    {:€
     

    Цитата:
     
    int myProc(int i);  
    int myProc(double r1, r2, *r3);
     

     
    эта функция уже перегруженна, надо только типы аргументов правильно указать
    int myProc(double r1, doubler2, double*r3);

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:47 24-03-2008 | Исправлено: distance, 17:48 24-03-2008
    akaGM

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

    Цитата:
    изучить из всё же полезно

    это да... но ты же не уходишь пока с РуБорда?
    изучим...
     
    а разве
    template <typename T> T
    не более обще, чем
    template<int> int
    т.е. первая конструкция разве не включает в себя и вторую тоже?
     

    Цитата:
    эта функция уже перегруженна

    а, ну да, на плюсах...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:46 24-03-2008
    Qraizer



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

    Цитата:
    а разве  
    template <typename T> T  
    не более обще, чем  
    template<int> int  
    т.е. первая конструкция разве не включает в себя и вторую тоже?  
    Ага. Но вторая более специализирована, поэтому компилятор будет выбивать её, если она подходит. Но при выводе аргументов шаблонов преобразования типов не рассматриваются и не выполняются. Поэтому, несмотря на то, что short кастуется к int, а для int есть специализация, если вызовешь с short, то будет вызван первичный шаблон, где в T будет подставлен short. Этим специализация шаблона отличается от перегрузки, при которой пути преобразований типов рассматриваются.

    ----------
    Одни с годами умнеют, другие становятся старше.

    Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 19:15 24-03-2008
    akaGM

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

     
    ага, хорошо...
    а вот теперь ответьте мне пожалуйста на самый сложный вопрос о шаблонах:
     
    в каком случае/случаях без них [шаблонов] я вынужден буду всю свою оставшуюся жизнь стоять на ушах, чтобы разрешить эту/эти проблему/ы?
     
    я серьёзно...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:25 25-03-2008
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    ну, например, если ты активно юзаешь Boost.MPL, или являешься её разработчиком

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:55 25-03-2008
    Qraizer



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    В случае, если в ситуациях, где шаблоны смогут сэкономить тебе кучу усилий, а ты будешь использовать вместо них их альтернативы. К примеру: шаблоны могут использоваться вместо условной компиляции; шаблоны могут использоваться для исполнения константных алгоритмов во время компиляции, например, решить за программиста, что выгоднее - передача по значению или константной ссылке; шаблоны могут использоваться для реализации статического полиморфизма; шаблоны могут использоваться для сборки цельного класса из отдельных кирпичиков, параметризующих и реализующих его стратегии поведения. Я вижу им множество применений. Если ты не будешь их видеть, то и на ушах стоять тебе будет незачем.

    ----------
    Одни с годами умнеют, другие становятся старше.

    Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 23:23 25-03-2008 | Исправлено: Qraizer, 23:25 25-03-2008
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Qraizer
    ага...
    а это ты перечислил возможности применения стандарта или какую-то конкретную спецификацию?
    т.е. вопрос звучит так: есть ли какая-то стандартная штука типа "стандарт шаблонов X.Y /ISO-тра-ля-ля/" и в конкретной реализации языка поддержка этого будет оговорена?
    и вообще, это применимо только для С++ или же нет? т.к. вот в дельфях грозят чем-то  подобным...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 07:40 26-03-2008
    Serhio3D

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем здравствуйте .
     
     
     
     
    Добавлено:
    Всем здравствуйте.
     
    Я недавно начал, скажите пожалуйста  
    Пишу на Microsoft Visual Studio 2008.
    Скажите где он ищет test.cpp ?
    И как указать фаил если он к примеру на с:\folder\test333.txt   ?
     
    --------------------------------------
    #include "stdafx.h"
    #include "string"
    #include "fstream"
     
     
    using namespace std;
     
    int main()
     
    {    
        ifstream in( "test.cpp" );
        ofstream out( "test.cpp" );
        string s;
        while (getline(in.s))
            out << s << "\n";
        }
     
    --------------------------------------  
    ------ Build started: Project: test, Configuration: Debug Win32 ------
    Compiling...
    test.cpp
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : error C2039: 's' : is not a member of 'std::basic_ifstream<_Elem,_Traits>'
            with
            [
                _Elem=char,
                _Traits=std::char_traits<char>
            ]
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : expects 2 arguments - 1 provided
            e:\program files\microsoft visual studio 9.0\vc\include\string(527) : see declaration of 'std::getline'
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : expects 3 arguments - 1 provided
            e:\program files\microsoft visual studio 9.0\vc\include\string(475) : see declaration of 'std::getline'
    c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : fatal error C1903: unable to recover from previous error(s); stopping compilation
    Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm"
    test - 4 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

    Всего записей: 7 | Зарегистр. 23-10-2006 | Отправлено: 08:04 27-03-2008
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Serhio3D
    попробуй строку
    while (getline(in.s))  
     
    заменить на
    while (getline(in, s))
     

    Цитата:
    И как указать фаил если он к примеру на с:\folder\test333.txt   ?  

    ifstream in( "с:\\folder\\test333.txt" );

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 13:29 27-03-2008
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не могу скомпилировать VC7.1 один файл...
    ошибка:
     
    error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
     
    долгое чтение msdn по поводу 'error C2679' привело лишь к долгому матерному монологу...
    т.к. я ни хрена в этом не понимаю, то прошу помочь...
     
    для тех кто в силах это победить привожу код (14.5 кб):
    http://slil.ru/25625068
     
    заранее спасибо
     
    -----
    кстати, не очень свежий гнусь сожрал это на ура...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:31 27-03-2008 | Исправлено: akaGM, 15:43 27-03-2008
    Qraizer



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

    Цитата:
    кстати, не очень свежий гнусь сожрал это на ура...
    Похоже, MS тут косячит. Интел компилер тоже скушал на ура. Откастуй тут *this к istream&, поможет.
    Цитата:
    а это ты перечислил возможности применения стандарта или какую-то конкретную спецификацию?  
    т.е. вопрос звучит так: есть ли какая-то стандартная штука типа "стандарт шаблонов X.Y /ISO-тра-ля-ля/" и в конкретной реализации языка поддержка этого будет оговорена?  
    и вообще, это применимо только для С++ или же нет? т.к. вот в дельфях грозят чем-то  подобным...
    Нет никаких стандартов на шаблоны, окромя их описания в рамках стандарта C++. Шаблоны в С++ - это просто часть языка, а не реализация некоего ISO/IEC. С++ не единственный, кто поддерживает generic programming, в ADAе тоже genericи есть, и в .NETе, говорят... Но плюсовым они не ровня - ADA, если не ошибаюсь, их хэндлит в run-time со всеми вытекающими на предмет производительности. .NET тоже их держит только на уровне "всего лишь" параметризации типов. Плюсовые же шаблоны обладают свойством функциональной полноты по Тьюрингу, а это уже качественно другой уровень, чем просто параметризация типов.
    Всё перечисленное (и другое, не перечисленное) - это уже использование свойств шаблонов, заложенных в них стандартом, и далеко не все из них стандартом предусматривались изначально. Свойство функциональной полноты, например, не планировалось и оказалось неожиданностью для самого комитета. Мне кажется, никто в мире не обладает полным представлением о потенциале этого языка. Вообще, С++ - единственный известный мне язык, который в научных кругах соответствующей направленности изучается, публикуются статьи, читаются доклады, посвящённые исследованиям его возможностей. Не удивлюсь, если и диссертации защищаются.

    ----------
    Одни с годами умнеют, другие становятся старше.

    Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 18:14 27-03-2008 | Исправлено: Qraizer, 18:17 27-03-2008
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Qraizer
    (istream&)(*this) ?
    помогло... спасибо...
    под рукой нет версий старше 7.1, не знаешь, в них то же?
    +
    что присоветуешь, варнинги подавить или всё-таки кастовать?
    '= < >' : signed/unsigned mismatch
     

    Цитата:
    в рамках стандарта C++. Шаблоны в С++...

    ок, понятно...
     

    Цитата:
    Вообще, С++ - единственный известный мне язык, который в научных кругах соответствующей направленности изучается...

    довольно забавно, как-будто это вещь в себе, внешняя данность, а не продукт...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:36 27-03-2008
    Qraizer



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Лучше разобраться, откуда эти варнинги, и по возможности пофиксить. Например тип begin сменить на unsigned. Если это особенность дизайна, как например, intовость параметров для charных функций, то кастовать. Забивать варнинги никогда не следует, рискуешь пропустить действительно важное. А так ты в нужных местах говоришь компилятору, что ты его варнинг увидел и учёл.

    ----------
    Одни с годами умнеют, другие становятся старше.

    Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 18:55 27-03-2008
    marrow1

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    всем привет. Visual Studio 2005 C++  
     
    на диалоговом окне у меня есть по несколько контролов radio, check, edit.  
    Сделать нужно так, что когда выбираю RADIO1 то нужно чтобы у CHECK1 параметр Disabled установился в значение False , так как я его по умолчанию  задал true, так как нужно его сначала отключить. Также сделать потм проверку, что если CHECK1 отмечен на окне, то аналогично предыдущему включить EDIT1. И последнее, сделать условие типа if (выбран RADIO1), то выполнить подсчет. Помогите, пожалуйста, а то я в 2005 студии не работал практически, да и в самом Visual C++ чуть работал, давно.

    Всего записей: 801 | Зарегистр. 21-12-2006 | Отправлено: 19:13 27-03-2008
    akaGM

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

    Цитата:
    Лучше разобраться, откуда эти варнинги, и по возможности пофиксить.

    в своих вещах я даже declared, but never used вычищаю...

    Цитата:
    рискуешь пропустить действительно важное.

    я бы не спрашивал, если б был автором этой библиотеки...
    а так, вроде отлаженный серьёзный продукт, и мне с моим кривым напильником туда лезть...
    ладно, вот посмотрим на реальных задачах что получится...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 19:44 27-03-2008 | Исправлено: akaGM, 20:53 27-03-2008
    Qraizer



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

    Цитата:
    я бы не спрашивал, если б был автором этой библиотеки...  
    а так, вроде отлаженный серьёзный продукт, и мне с моим кривым напильником туда лезть...  
    ладно, вот посмотрим на реальных задачах что получится...
    Это вот сие ты назвал серьёзным продуктом ?? Он даже не слинкуется, т.к. конструкторов не хватает. Что уж тут говорить о варнингах, на которые авторы просто положили. У кого какой напильник - у меня даже сомнений не возникает. Не скромничай без причины, увидел багу - правь и шли авторам.

    ----------
    Одни с годами умнеют, другие становятся старше.

    Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 19:27 28-03-2008
    marrow1

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Visual Studio 2005 C++    какой функцией можно проверить состояние контрола Check1, типа отмечен он или нет (Checked, Unchecked), чтобы я мог написать типа:
     
    if (IDC_CHECK1.isChecked=true)
     
    {
    действие
    }
     
    и аналогично сделать проверку состояния для контрола Radio1.
     
    а то в MSDN туго и не нашел.

    Всего записей: 801 | Зарегистр. 21-12-2006 | Отправлено: 00:39 29-03-2008
    marrow1

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуйста.
    С предыдущими вопросами разобрался. Сейчас же проблема у меня реально посложнее и нужен соыет того кто знает.
    К примеру вот есть у меня вот такой подсчет(реально их несколько, но я тут я взял для примера один только):  
     
    if (k1<257&k1>0) {p=a1; r=b1; s=c1; t=d1;
                    u=a1; v=b1; w=c1;
                    e1=255; f1=255; g1=255;
                    if (k1<8&k1>3){h1=252; l2=30; m=2; t=t&h1; z=t+3;}
                    if (k<16&k1>7){h1=248; l2=29; m=6; t=t&h1; z=t+7;}
                    if (k1<32&k1>15){h1=240; l2=28; m=14; t=t&h1; z=t+15;}
                    if (k1<64&k1>31){h1=224; l2=27; m=30; t=t&h1; z=t+31;}
                    if (k1<128&k1>63){h1=192; l2=26; m=62; t=t&h1; z=t+63;}
                    if (k1<256&k1>127){h1=128; l2=25; m=126; t=t&h1; z=t+127;}
                    if (k1<257&k1>255){h1=0; l2=24; m=254; t=t&h1; z=t+255;}
                    
            }
     
    есть еще переменная k отдельно от k1. Данный фрагмент кода, что я привел считатет новые значения p,r,s,t,u,v,w,z . И этих меременных будет не по 1, а столько сколько нам будет задано значение k, т.е. нужно сделать цикл, чтобы программа считала значения p1,r1,s1,t1,u1,v1,w1,z1, потом считала p2,r2,s2,t2,u2,v2,w2,z2 и т.д., столько раз сколько у нас будет равно k. И чтобы потом можно было эти же данные вывести. Т.е. мы наперед не можем знать сколько у нас будет разных значений переменных p,r,s,t,u,v,w,z, и они все нам нужны. Как это можно реализовать? Помогите пожалуйста.

    Всего записей: 801 | Зарегистр. 21-12-2006 | Отправлено: 17:30 30-03-2008
    Labutin



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    marrow1
    Пусть p,r,s,t,u,v,w,z будут массивами.

    Всего записей: 935 | Зарегистр. 31-07-2001 | Отправлено: 18:08 30-03-2008
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru