Перейти из форума на сайт.Реклама на Ru.Board


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Crazy_Shrike



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

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

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

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

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

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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    там мне надо чтоб переходила, только уторрент на это не влиял. галочку я конечно пользую.
     

    Цитата:
    powercfg -Change -standby-timeout-ac 0

    вот это может и поможет. если уторрент запускать батником с этой командой. спасибо.

    Всего записей: 1953 | Зарегистр. 29-03-2016 | Отправлено: 11:16 23-08-2017
    data man



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

    Цитата:
    https://github.com/Morgan-Stanley/hobbes  

    Сами вы это чудо, судя по всему, не используете. Иначе бы заметили, что этот движок не поддерживает wchar_t/wstring, что я особо подчеркнул.
    В любом случае, llvm для скриптов - это уже перебор.


    С недавних пор начал использовать american fuzzy lop (неофициальное зеркало).
    Для Windows есть отличный порт.
    Рекомендую!

    ----------
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1407 | Зарегистр. 13-10-2005 | Отправлено: 21:06 25-08-2017 | Исправлено: data man, 21:06 25-08-2017
    bomzz

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

    Всего записей: 1953 | Зарегистр. 29-03-2016 | Отправлено: 14:16 27-08-2017
    slay93



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

    Цитата:
    без смещения его физического местоположения на диске

    при таком условии я бы предположил редактор диска скорее

    Всего записей: 763 | Зарегистр. 13-01-2003 | Отправлено: 17:14 27-08-2017
    bomzz

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

    Всего записей: 1953 | Зарегистр. 29-03-2016 | Отправлено: 17:31 27-08-2017
    Zatupitel



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

    Цитата:
    без смещения его физического местоположения на диске

    Как бы все зависит, наверное, от размера файла. Как мне кажется, файл лежит на диске и занимает Х кластеров. В FAT-таблице есть запись начала файла, длина и так для всех его кусочков, если он был "размазан" на много кластеров и кластеры не идут друг за другом. Если мы перезаписываем файл большим или меньшим размером, то скорее всего система запишет файл в новое место и удалит старый файл ( не факт, но дольше сравнивать что в нем изменилось, проще удалить и записать новый). Если мы просто меняем файл и длина не меняется, то возможно, система запишет изменения без перемещения файла (вообщем-то не факт, но какая ему разница, если файл не меняется в размере, а с учетом того, что для чтения часто используется мэпирование в память, то это самое простое). Поэтому, думаю все зависит от системы, и разработчиков. А как на самом деле... лично я не вдавался в детали.

    Всего записей: 258 | Зарегистр. 31-08-2006 | Отправлено: 16:20 28-08-2017 | Исправлено: Zatupitel, 16:22 28-08-2017
    bomzz

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

    Всего записей: 1953 | Зарегистр. 29-03-2016 | Отправлено: 16:25 28-08-2017
    Zatupitel



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все зависит еще и от типа файловой системы. Если это FAT, то будет записан новый файл, а старый помечен на удаление. В NTFS все по-другому. За файлами следит таблица MFT.  Как это работает (NTFS) это к мелкомягкому. Но проще удалить и создать заново, чем делить файл на кусочки. Будет и быстрее и надежнее.

    Всего записей: 258 | Зарегистр. 31-08-2006 | Отправлено: 16:46 28-08-2017
    bomzz

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

    Всего записей: 1953 | Зарегистр. 29-03-2016 | Отправлено: 16:52 28-08-2017
    Zatupitel



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А кто дает гарантию, что файл не изменился целиком ? При записи, кто определит его размер ? Проще записать в новое место и удалить старый. Меньше накладных расходов и проблем с длиной.

    Всего записей: 258 | Зарегистр. 31-08-2006 | Отправлено: 17:02 28-08-2017
    bomzz

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

    Всего записей: 1953 | Зарегистр. 29-03-2016 | Отправлено: 17:05 28-08-2017
    Daniyar91

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

    Цитата:
    Сами вы это чудо, судя по всему, не используете. Иначе бы заметили, что этот движок не поддерживает wchar_t/wstring, что я особо подчеркнул.  
    В любом случае, llvm для скриптов - это уже перебор.  

    Нет, не использую. Раньше самого интересовал вопрос что прикручивать к софтам, не говнище-питон же. Цель была не на вопрос ответить, а показать, кому это надо, возможно годный язык.
     

    Цитата:
    В любом случае, llvm для скриптов - это уже перебор.

    Мир переходит на зеленые технологии, но продолжает юзать всякие Питоны, Электроны, nodeJS и т.п.
    У меня дома к эл. сети постоянно подключен только холодильник и компьютер (колонки, системник и т.д), плюс освещение, а счет за свет что-то слишком большой (сколько это? -Не суть, больше, чем мог быть бы). Ничего удивительного - софтов, основанных или использующих что-либо, или все сразу из указанного выше, все больше и больше.
     
    Скоро, без LLVM, даже губная помада будет считаться (читай - будет) медленной.
    Если ты воспользуешься LLVM, возможно, мир станет чуточку лучше.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 09:06 29-08-2017
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    давно не обращался к MS VS, стояла 2010 Экспресс ну и пусть стоит со своим cl v16.0
    а тут пришлось переставлять пару машин, так с удивлением обнаружил свободные тулзы
    MS Visual C++ Build Tools вплоть до 2017...
    т.к. VS никогда не была нужна, то оказался приятно удивлён...

    Всего записей: 17422 | Зарегистр. 06-12-2002 | Отправлено: 16:10 11-09-2017
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor
    C++ Templates - The Complete Guide, 2nd Edition
    Addison-Wesley, 2017
    http://forum.ru-board.com/topic.cgi?forum=93&topic=0488&start=740#12
     
    Добавлено:
    Если кто не заметил, текущая шапка это УГ.
    Я заметил, но у меня сейчас нет времени.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 17:26 19-09-2017 | Исправлено: Daniyar91, 17:40 19-09-2017
    GeorgeMame

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Реализация алгоритма Джонсона-Троттера для генерации перестановок под Linux'ом проходит нормально (icc):
    123
    132
    231
    321
    312
    213
    , а под виндами получаю ошибку:  
    для icl

    Код:
     
    jt_perm.c
    jt_perm.c(86): error: expression must be a pointer to a complete object type
            memcpy(h->buffer, array + h->elems[i].integer * h->size, h->size);
                          ^
    jt_perm.c(87): error: expression must be a pointer to a complete object type
            memcpy(array + h->elems[i].integer * h->size,
                   ^
    jt_perm.c(88): error: expression must be a pointer to a complete object type
                   array + h->elems[j].integer * h->size, h->size);
                   ^
    jt_perm.c(89): error: expression must be a pointer to a complete object type
            memcpy(array + h->elems[j].integer * h->size, h->buffer, h->size);
     

                          ^
    а для cl

    Код:
     
    jt_perm.c(86) : error C2036: void *: неизвестный размер
    jt_perm.c(87) : error C2036: void *: неизвестный размер
    jt_perm.c(88) : error C2036: void *: неизвестный размер
    jt_perm.c(89) : error C2036: void *: неизвестный размер
     

     
    main.c:

    Код:
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "jt_perm.h"
     
    void print(int *test, int n)
    {
        int i;
        for(i = 0; i < n; ++i)
            printf("%d", test[i]);
        printf("\n");
    }
     
    int main(int argc, char *argv[])
    {
        int myArray[]       = { 1, 2, 3 };
        size_t n_elems      = sizeof(myArray) / sizeof(int);
        size_t size_of_elem = sizeof(int);
     
        jt_handle_t *h = jt_create(n_elems, size_of_elem);
     
        do {
            print(myArray, n_elems);
        } while(jt_next_perm(h, myArray));
     
        jt_free(h);
     
        return 0;
    }
     

     
    jt_perm.c:

    Код:
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "jt_perm.h"
     
    #define LEFT -1
     
    //Directed integer internal structure
    typedef struct {
        int integer;        //Original index in the array
        int dir;        //-1 or 1
    } directed_int;
     
    //Handle structure
    struct jt_handle {
        size_t n;        //Number of elements
        directed_int *elems;    //n directed integers
        size_t size;        //Size of an element in the array
        void *buffer;        //Zone of memory used to swap values
    };
     
    //Malloc with error checking
    void *emalloc(size_t size)
    {
        void *p = malloc(size);
     
        if(!p) {
            fprintf(stderr, "Memory allocation failed(emalloc).\n");
            exit(-1);
        }
     
        return p;
    }
     
    //Allocates memory and initializes the handle
    jt_handle_t *jt_create(size_t n, size_t size)
    {
        jt_handle_t *h = (jt_handle_t*) emalloc(sizeof(jt_handle_t));
     
        h->n = n;
        h->size = size;
        h->elems = (directed_int*) emalloc(sizeof(directed_int) * n);
        h->buffer = emalloc(size);
     
        int i;
        for(i = 0; i < n; ++i) {
            h->elems[i].integer = i;
            h->elems[i].dir     = LEFT;
        }
     
        return h;
    }
     
    //Check if it's a mobile integer
    int is_mobile_integer(jt_handle_t *h, int index)
    {
        int neighbor = index + h->elems[index].dir;
     
        //If the neighbor index is not in range
        if(neighbor < 0 || neighbor >= h->n)
            return 0;
     
        return (h->elems[index].integer > h->elems[neighbor].integer);
    }
     
    //Finds the largest mobile integer
    int largest_mobile_integer(jt_handle_t *h)
    {
        int i, k = -1;
     
        for(i = 0; i < h->n; ++i)
            if(is_mobile_integer(h, i) &&  
                ( k == -1 || h->elems[i].integer > h->elems[k].integer))
                k = i;
     
        return k;
    }
     
    //Swap the values in the handle and in the array
    void swap_values(jt_handle_t *h, void *array, int i, int j)
    {
        directed_int swap_di = h->elems[i];
        h->elems[i] = h->elems[j];
        h->elems[j] = swap_di;
     
        memcpy(h->buffer, array + h->elems[i].integer * h->size, h->size);
        memcpy(array + h->elems[i].integer * h->size,  
               array + h->elems[j].integer * h->size, h->size);
        memcpy(array + h->elems[j].integer * h->size, h->buffer, h->size);
    }
     
    int jt_next_perm(jt_handle_t *h, void *array)
    {
        int k = largest_mobile_integer(h);
        int neighbor = k + h->elems[k].dir;
     
        //If no mobile integers left
        if(k == -1)
            return 0;
     
        //Reverse direction for all integers > k's integer
        int i;
        for(i = 0; i < h->n; ++i)
            if(h->elems[i].integer > h->elems[k].integer)
                h->elems[i].dir *= -1;
     
        //Swap k with neighbor in h->elems and in array
        swap_values(h, array, k, neighbor);
     
        return 1;
    }
     
    void jt_free(jt_handle_t *h)
    {
        free(h->elems);
        free(h->buffer);
        free(h);
    }
     

     
    jt_perm.h:

    Код:
     
    /*
     #ifndef JT_PERM_H
    #define JT_PERM_H
     
    /* Handle used to save the current state of the algorithm. */
    typedef struct jt_handle jt_handle_t;
     
    /*  
     * Create the handle used to generate the permutation for an
     *array of *n* elements, each element having the size *size*.
     */
    jt_handle_t *jt_create(
        size_t n,  
        size_t size
    );
     
    /*
     * Make the next permutation in *array* by swapping only 2 values.
     * Returns 1 if a permutation was made.
     * Returns 0 if no permutation was made(i.e. the last permutation was  
     *reached last call).
     */
    int jt_next_perm(
        jt_handle_t *h,  
        void *array
    );
     
    /*
     * Frees the memory used by the handle.
     */
    void jt_free(
        jt_handle_t *h
    );
     
    #endif /*JT_PERM_H*/
     

     
    Попытка замены void на int для массива array не увенчалась успехом.

    Всего записей: 86 | Зарегистр. 24-07-2015 | Отправлено: 16:24 29-09-2017 | Исправлено: GeorgeMame, 16:27 29-09-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    Вынесите определения directed_int и jt_handle из jt_perm.c туда, где им и положено быть - в jt_perm.h.

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

    Всего записей: 5249 | Зарегистр. 22-10-2005 | Отправлено: 16:52 29-09-2017
    GeorgeMame

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    Вы правы: не там им место, но это не помогло - те же ошибки.

    Всего записей: 86 | Зарегистр. 24-07-2015 | Отправлено: 17:11 29-09-2017 | Исправлено: GeorgeMame, 17:12 29-09-2017
    ne_viens

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

    Цитата:
    ...
    Попытка замены void на int для массива array не увенчалась успехом.

     
    char попробуй.

    Всего записей: 1282 | Зарегистр. 01-11-2004 | Отправлено: 17:24 29-09-2017
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GeorgeMame
    Ну и, разумеется, поменяйте тип указателя array - арифметические действия с указателями типа void* не разрешены. Судя по тому, что размер считается в байтах, на char*.

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

    Всего записей: 5249 | Зарегистр. 22-10-2005 | Отправлено: 17:35 29-09-2017
    GeorgeMame

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

    Цитата:
    char попробуй.

    Abs62

    Цитата:
    ...

     
    Спасибо, помогло: не подскажите, почему в Linux'е проходит.
     
     
    Добавлено:
    Daniyar91
     
    На либгене эта книга в гораздо меньшем размере.

    Всего записей: 86 | Зарегистр. 24-07-2015 | Отправлено: 17:40 29-09-2017 | Исправлено: GeorgeMame, 17:42 29-09-2017
    Открыть новую тему     Написать ответ в эту тему

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

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

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru