[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Крайне медленная функция. я бы брал ссылку на вектор, все равно его объявит вышестоящая функция. А так еще и конструктор копирования вызывается.
     
    #1581 4p3, 17 Sep 2008
    Last edited: 17 Sep 2008
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Как по мне - то разница в пару процентов несущественна, ведь все равно нагрузка на ФС будет основная.
     
  3. NC22

    NC22 New Member

    Joined:
    12 Jul 2008
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Возникла проблема. Пишу на С++ Builder'e. Хотел сделать свою прогу более удобной, добавил объект MainMenu и перенес функции нажатия соотв. клавишь туда. Однако после переноса (если просто через Button'ы меню программы делать, все работает на Ура) одна кнопка после нажатия стала перекрашивать окно, т.е. оно становится каким-то нетаким, заголовок программы пропадает, кнопки (свернуть,развернуть и закрыть в заголовке) тоже, поле ввода текста на половину окрашивается черным(до того места до которого есть текст). Если нажать на заголовок программы то она закрывается. Ошибок не выдает. Повторюсь что если через Button обычый без MainMenu то все нормально (даже через маинменю код выполняет, но окно программы портит и нечего не видно толком)
     
  4. Exile1985

    Exile1985 Elder - Старейшина

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    было бы замечательно если бы ты код выложил, а лучше весь проект через файло обменник.

    з.ы. да и бросай ты это гнилое дело писать в билдере на с++
     
  5. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    А ты подскажешь, как в Vc юзать Vcl? ))))

    Но все равно по указателю получше будет, тут ты прав, но причина твоя явно надумана)
     
  6. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Ты сам себе ответил? :D

    Ладно, ближе к делу. Просто возвращение целого вектора из функции довольно редкий стиль. Реально юзер не заметит этого, так как даже при худшем случае в 10к файлов мы лишний раз скопируем килобайт 100(10 символов на все про все). Для сегодняшнего дня это пустяки.

    Хотя эту функцию можно еще ускорить, если использовать уникод-вариант.

    Оптимизация - корень всех зол, но не стоит о ней забывать.
     
  7. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Я ее просто с AnsiString перевел, в билдере вообще с уникодом жопа )

    Почитай, тебе полезно будет: http://rsdn.ru/article/philosophy/Optimization.xml
    Краткий смысл: оптимизировать нужно только критические места.
     
  8. NC22

    NC22 New Member

    Joined:
    12 Jul 2008
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Ок. Надеюсь на народе пойдет (http://narod.ru/disk/2665777000/prog_src.rar.html)? Ну если надо еще залью, только скажи сам куда. В архиве Исходники и готовый билд. Сам посмотришь, на кнопке и на др. кнопке в Меню одно и тоже действие на OnClick. Не суди строго за код, учился билдеру сам, писал сам не чего не принемая за базу. В уневерситете, вот в этом году поступил, будем изучать Delphi уже профессионально, но хотелось бы конечно MVS освоить, ну да ладно...не судьба.
    Так же в архиве тестовый файл примерMTADMвSAMP.map . Загружешь его через программу (Файл->Открыть...) далее Конвертировать в...->MTA DM в SAMP или просто окне программы кнопка "Через простую кнопку все ОК".
     
  9. O.mnenie

    O.mnenie Banned

    Joined:
    18 Aug 2008
    Messages:
    6
    Likes Received:
    124
    Reputations:
    0
    да ! полезна
     
  10. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    Постараюсь объяснить суть. Нужно написать функцию, которая принимала бы в качестве аргумента массив из нескольких слов (через пробел) которые бы находились в argv[0], argv[1] и тд. Что-то типа как в функции main(int argc, char *argv[]). Здесь запуская программу мы можем указать параметры, например:
    Code:
    ./a.out hello world
    
    Тогда argv[1]=hello argv[2]=world. Нужна примерно аналогичная функция, только чтобы принимала массив. Например:
    Code:
    ...
    int XFunction(char *x[]) {
    printf("%s", x[1]);
    printf("%s", x[2]); 
    return 0; }
    
    int main() {
    char buff[512];
    gets(buff);
    XFunction(buff);
    return 0; }
    
    Здесь запускаем программу, вводим, к примеру hello world, и XFunction нам выводит в качестве x[1] - hello, в качестве x[2] - world. Это как нибудь реально осуществить? Сколько не пытался, все время Segmentation Fault :(
    Заранее спасибо!
     
  11. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Дорогой ++Norton++, очень хочу узнать твое мнение. Каким макаром компилятор так ловко преобразовал из char* в char**. Вот просто интересно... :confused:

    Добавлено позже...
    А вот еще очень интересный момент. x[2] бескомпромисно вылезло за размеры массива и так упорно пытается что-то вырвать с памяти. :eek:

    PS: просто хорошее настроение. :)
     
    #1591 4p3, 19 Sep 2008
    Last edited: 19 Sep 2008
  12. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    идёшь циклом по содержанию файла,если пробел к примеру ставишь флаг и считаешь количество букв в слове(до след. пробела).Ну и если оно равно тому которое тебе нужно - сохраняешь.
     
  13. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    UnPazz,
    берем fstream. Определяем разделитель текстового файла. Объявляем один объект типа string и используем getline. Первый аргумент - объект fstream, второй объект string, третий - char разделитель. Организуем цикл. Проверочным условием будет метод eof() , угадайте какого объекта. Для определения длины используется функция-член класса string size().
    Успехов.
     
  14. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Регулярными выражениями: (\b[\w]{длина}\b)
     
  15. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    ---------

    ---------
    UnPazz, Если нужна инфа по регуляркам то вот:
     
  16. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    UnPazz
    Вот на С++ http://paste.pocoo.org/show/85661/
     
  17. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    4p3
    Да нет, компилятор ничего не преобразовывал :). То что я привел, я согласен бред полнейший. Это я привел просто для примера, т.к. правильно сделать не знаю пока как. Вот и обращаюсь за помощью
     
  18. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297

    Переменную переименуй из rand в rand_ и скомпилится.

    Code:
    int rand_;
    
     
    #1598 0x0c0de, 19 Sep 2008
    Last edited: 19 Sep 2008
    2 people like this.
  19. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    вот выдалось время свободное

    Code:
    //---------------------------------------------------------------------------
    #include <iostream>
    #include <cstdlib>
    #pragma hdrstop
    using namespace std;
    //---------------------------------------------------------------------------
    
    void PrintVarArg(char** args, int nArgsCount)
    {
            for (int i = 0;i < nArgsCount;++i)
                    cout << args[i];
    }
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
            char *szArgs[] = {"dalek", "kaled"};
            PrintVarArg(szArgs, 2);
            system("pause");
            return 0;
    }
    //---------------------------------------------------------------------------
    
     
  20. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    Есть такой вопросик: почему не работает ф-я CharToOem() в Visual Studio2008(C++9), тоесть ругается с ошибкой
    error C2664: 'CharToOemW' : cannot convert parameter 1 from 'char [7]' to 'LPCWSTR'

    В С++ 6 все отлично работало, а тут не хочет, может кто знает в чем тут проблема?

    char z[] = "ПревеД";
    CharToOem(z,z);
     
    #1600 horlyk, 20 Sep 2008
    Last edited: 20 Sep 2008
Thread Status:
Not open for further replies.