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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    zeliboba1

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подробнее... [/more]

    Всего записей: 4 | Зарегистр. 07-02-2012 | Отправлено: 11:46 10-02-2012 | Исправлено: zeliboba1, 11:48 10-02-2012
    terminat0r



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть одна проблемка
    Суть- один xml файл и надо бы отсортировать его items алфавитно (именно сам xml файл а не данные с него) по string что в <match>...</match> находится.
    Дело в том что есть одна программа, которая читает этот файл но в ней нет сортировки- как читает этот файл так и показывает данные. Недоделали ее. Надо бы ей помочь
    Пример XML здесь
    Подробнее...
     
    Вопросы следующие,
    - позволяет какой либо парсер сортировать внутреннюю структуру XML. Подозреваю что нет.
    - как бы попроще отсортировать его? разобрать на itemы потом отсортировать? Мне главное бы идею верную, а то пока всякие multimaps только в голову лезут, не хочется на govnokod.ru попасть.

    Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 05:31 18-02-2012
    cp58

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

    Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 13:39 18-02-2012
    Shandera

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте уважаемые специалисты.
    Помогите пожалуйста решить проблемку. Ситуация такая. Раньше, создавал программы только с одним окном, но продолжая расти, столкнулся с необходимостью создать много оконное приложение. А точнее два окна. Значит теперь подробно:
     
    ОС: Windows 7.
    Среда: Visual Studio 2010.
    Приложение: Windows Form.
     
    Значит имеем форму, на ней кнопка. При нажатии на кнопку, должна появится вторая форма. Все. Значит что сделано. Создана вторая форма (имя: TestWindow), сохранена. В первой форме сделано подключение второй формы (#include "TestWindow.h"). И в обработчике события при нажатии на кнопку, сделан её вызов:
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
     TestWindow -> Show();
    }
     
    Но вот при попытке создать программу, появляются две ошибки:
     
    error C2143: синтаксическая ошибка: отсутствие ";" перед "->"
    error C2143: синтаксическая ошибка: отсутствие ";" перед "->"
     
    с указанием на эту строку: TestWindow -> Show();
     
    Вопрос, что сделано мной не так? (((.

    Всего записей: 642 | Зарегистр. 03-09-2010 | Отправлено: 09:08 19-02-2012
    Red Planet



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Создаю объект класса, потом реинициализирую его другим конструктором.
     
    Очень удивился, когда увидел, что деструктор вызывается после вызова второго конструктора, а не до. Ведь логичнее было бы разрушить старый объект перед созданием нового, а здесь получается, что сначала имеем один объект, потом реинициализиреум его поля, потом вызываем деструктор, потом работаем с новымыми значениеями полей. Почему в таком странном порядке идет работа? Ладно еще, если не используем динамическую память (хотя зачем нам деструктор без нее?), - тогда внешне все в порядке. А вот если попробовать вызвать a1.show() после второй инициализации, то сначала вместо значения, хранящегося в p, получим какое-то произвольное число, а потом вылетит исключение.  
     
    Ниже вывод программы и код.  
     
    Вывод.
     

    Цитата:
    Created
    10 10
    Other values
    Created
    Deleted
    100 100
    Для продолжения нажмите любую клавишу . . .
     

    Код без указателя.
     

    Код:
    #include "stdafx.h"
    #include <iostream>
     
    using namespace std;
     
    class A {
        int x, y;
        public: A() { x = y = -1; cout << "Created default" << endl; }
                A(int xx, int yy) { x = xx; y = yy; cout << "Created" << endl; }
                ~A() { cout << "Deleted" << endl; }
                void show() { std::cout << x << " " << y << endl; }  
     
    };
     
     
    int _tmain(int argc, _TCHAR* argv[]) {
        A a1 = A(10, 10);
        a1.show();
        cout << "Other values" << endl;
        a1 = A(100, 100);
        a1.show();
        system("pause");
        return 0;
    }

     
    Код с указателем.
     

    Код:
    #include "stdafx.h"
    #include <iostream>
     
    using namespace std;
     
    class A {
        int x, y, *p;
        public: A() { x = y = -1; p = new int(100); cout << "Created default" << endl; }
                A(int xx, int yy) { x = xx; y = yy; p = new int(100); cout << "Created" << endl; }
                ~A() { delete p; cout << "Deleted" << endl; }
                void show() { std::cout << x << " " << y << " " << *p << endl; }  
     
    };
     
     
    int _tmain(int argc, _TCHAR* argv[]) {
        A a1 = A(10, 10);
        a1.show();
        cout << "Other values" << endl;
        a1 = A(100, 100);
        a1.show();
        system("pause");
        return 0;
    }

    Всего записей: 215 | Зарегистр. 18-06-2009 | Отправлено: 14:15 19-02-2012 | Исправлено: Red Planet, 18:04 23-02-2012
    cp58

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Red Planet
    Это происходит из-за того, что деструктор вызывается 3 раза.
    Дело в том, что второй вызов конструктора создает новый объект, затем происходит почленное копирование элементов и инициализируется третий объект(идет вызов оператора присвоения) и для каждого вызывается деструктор.
    Исправить это можно с помощью перегрузки оператора присвоения:

    Код:
    A& operator= (const A &a) {
            if (this!=&a) {
                    delete p;
                    p=new int;
                    *p=*a.p;
            }
            return *this;
    }
     

    Это лишь пример и не самый лучший.
    Обычно используют подсчет внутренний ссылок, например через shared_ptr.

    Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 15:59 19-02-2012
    Abs62



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

    Цитата:
    Очень удивился, когда увидел, что деструктор вызывается после вызова второго конструктора, а не до. Ведь логичнее было бы разрушить старый объект перед созданием нового, а здесь получается, что сначала имеем один объект, потом реинициализиреум его поля, потом вызываем деструктор, потом работаем с новымыми значениеями полей. Почему в таком странном порядке идет работа?

    Да потому, что нет здесь никакой реинициализации. Есть копирование одного объекта в другой.

    Код:
    a1 = A(100, 100);

    Создаётся временный объект класса A и присваивается переменной a1, затем он деструктируется. Поскольку не определены ни конструктор копирования, ни оператор присваивания, вызывается дефолтный конструктор копирования, который просто побайтово копирует содержимое. При работе с динамической памятью это, естественно, приводит к глюкам.
    В общем, читай, что такое конструктор копирования, зачем он нужен и чем чревато его отсутствие.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 16:44 19-02-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    что-то я приплыл...
     

    Код:
    //////////////////////////
    file.h
     
    __inline int foo();
     
    //////////////////////////
    file.c
     
    #include "file.h"
     
    __inline int foo() {
    ...
    }
    //////////////////////////
    work.c
     
    #include "file.h"
     
    void main() {
      int res;
      res = foo();
      printf("%d\n", res);
    }
    никак не удаётся "увидеть" эту функцию
     
    компиляторы cl от 2008 и 2010 Экпресс Студий
    опции /O2 /Oi /Ob1
    #pragma inline_depth(1) тоже не помогает...
     
    что я не так делаю?

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 18:44 20-02-2012 | Исправлено: akaGM, 18:50 20-02-2012
    karakurt2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    перемести определение функции в заголовочный файл

    Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 18:51 20-02-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    karakurt2
    охренеть...
    это вообще не моя библиотека, но в оригинале именно так (на .h и .c) разнесено
    и базовый компилятор -- гнусь
     
    спасибо...

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 18:55 20-02-2012 | Исправлено: akaGM, 18:58 20-02-2012
    karakurt2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Реализация встраиваемой функции должна быть известна на этапе компиляции, единица компиляции файл. В объявлении модификатор inline ообще не имеет смысла. Не представляю, как можно в объектный код поместить определение функции из другого объектного файла. Тогда уж это должен быть вызов внешней процедуры.

    Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 19:08 20-02-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    понятия не имею...
    наткнулся, напоролся, спросил, помогли :)
     
    сейчас вообще всё от#define'ю на фиг...

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 19:13 20-02-2012 | Исправлено: akaGM, 19:14 20-02-2012
    maximhik70

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

    Всего записей: 2 | Зарегистр. 25-02-2012 | Отправлено: 21:08 25-02-2012
    Red Planet



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cp58, Abs62, спасибо.
     
    Следующее. Что скажете насчет такого кода? Все ли правильно?
     
    Смысл такой. При сложении двух объектов сумма должна "знать" правого операнда. Поэтому заведен указатель *p, который проявляется только при сложении, в остальных случаях он никуда не указывает. Приведенный код работает, однако меня смущает то, что два указателя ссылаются на одно и тоже значение. См. оператор сложения, в нем строка
     

    Код:
    p = right.p;

     
    При применении  
     

    Код:
    A a4 = a3;
    A a5 = a3;

     
    еще два объекта, у которых есть указатель, ссылающихся на тот же объект - правый операнд того самого сложения.
     
    Подробнее...

    Всего записей: 215 | Зарегистр. 18-06-2009 | Отправлено: 21:59 25-02-2012 | Исправлено: Red Planet, 19:07 26-02-2012
    knkd

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

    Цитата:
    Не представляю, как можно в объектный код поместить определение функции из другого объектного файла. Тогда уж это должен быть вызов внешней процедуры.

    Именно для этого заведено -flto и что-то аналогичное в интеле.
    Так что с гнусной версии 4.6 это имеет смысл.
     
    Добавлено:
    akaGM

    Цитата:
    сейчас вообще всё от#define'ю на фиг...

    Сатана соблазняет вас, сопротивляйтесь козням его!

    Всего записей: 196 | Зарегистр. 15-01-2008 | Отправлено: 23:07 25-02-2012
    maximhik70

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

    Всего записей: 2 | Зарегистр. 25-02-2012 | Отправлено: 23:12 25-02-2012
    knkd

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    maximhik70
    Потому, что блокнот проверяет первые N символов файла.
    Если среди них нет ни одного непечатного, то он принимает файл за текстовый.
    Если есть - бинарный.
     
    Правда ещё шерстит по разным кодировкам, но получается у него хреново.
     
    А ASCII текст (0х20..0х7Е) инвариантен.
    Если посмотрите двоичным редактором/просмотрщиком - увидите, что у записаных переменных непонятные коды по sizeof(TYPE) байт на каждую, а текст так и остался текстом.

    Всего записей: 196 | Зарегистр. 15-01-2008 | Отправлено: 23:29 25-02-2012
    Red Planet



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

    Цитата:
    I've used Log4cpp in the past and it does the job, though bear in mind the project has been inactive since 2007

     
    Также рекомендовали  
     

    Цитата:
    There are also the following alternatives:
    Apache's log4cxx which is still active.  
    Matthew Wilson's Pantheios library.
    Log4cplus.

     
    Log4cxx и Log4cplus. Там предлагается скачать tar.gz и собрать при помощи ./configure, make, make install. Уже сомневаюсь, что это имеет какое-то отношение к Windows и C++Builder.
     
    Matthew Wilson's Pantheios library. Не успею сегодня опробовать. А стоит ли?
     
    Как можно посмотреть причину зависания? Предлагайте варианты, в том числе предполагающие отказ от Builder.
     
    Версия Builder: C++Builder 2010.

    Всего записей: 215 | Зарегистр. 18-06-2009 | Отправлено: 21:22 26-02-2012
    lol2xD

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно отсортировать массив методом пузырька. Но у меня не получается.
     
    http://s017.radikal.ru/i413/1202/44/99c302410098.jpg
     
    код

    Всего записей: 183 | Зарегистр. 18-05-2009 | Отправлено: 17:07 27-02-2012
    cp58

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lol2xD
    Вот тут на одной из последних 10 страниц был метод пузырька.
    Red Planet

    Цитата:
    Программа виснет после return одной функции.  

    После какой функции и в каком коде?

    Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 19:48 27-02-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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