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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    некорректно работает зараза. что то не то. зависает вызов меню, что то должно сбрасываться от чего то.    
     
    Добавлено:
    http://zalil.ru/32098776
    если F10 нажать меню появится, если убрать его ESCAPE оно исчезнет, но чтоб оно опять появилось надо перед F10 нажать какую нибудь служебную клавишу ESC или ALT например, потому что окно залочено как бы - например курсор не мигает в едитконтроле в такие моменты
     
    Добавлено:
    а когда ALT+SPACE используешь то на самом деле сначала ALT нажимается и окно разлочивается

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:33 20-11-2011
    bomzzz



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    если зарыть системное меню клавишей ESCAPE то кнопка ALT остается зажатой, или ее надо каждый раз отжимать или это вообще дурацкая идея фльт+спейс заменять. наверно ошибка микрософта

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:51 21-11-2011
    kenny5705



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    можно ли с помощью с++ получить содержимое веб-страниц (исх.код)? если да, то как?

    Всего записей: 468 | Зарегистр. 15-01-2009 | Отправлено: 21:54 25-11-2011
    bomzzz



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kenny5705
    скачать и рассматривать как текстовый документ
     
    wininet или winsocks - ключевые слова чтоб скачать. а скачанное ну просто текстовый файл
     
    wininet - считается проще, это библиотека ИЕ, которая сама использует winsocks
    winsocks считается сложнее но на самом деле ни че сложного запрос сформировать нетрудно
    че лучше использовать зависит от сложности задачи.
    urlmon еще есть такая библиотек, если просто надо скачать небольшую страничку то проще всего ее использовать
     
    возьми любой URL (ссылку) на страницу засунь в менеджер закачек какой тама у тебя DownloadMaster NetTrasport любой, скачается htm или html файлик, открой его в блокноте вот так и получится
     
    не думаю что ты тама затеял что то сложное (иначе бы не спрашивал про текстовый формат) вот пример но только на масме на Си не трудно переложить URLMON-а.
    все в одну строку делается и если не нужен спесфиский юзерагент или кукиш, и ссылка не шибка мудреная - то самый подходячий спосоп
     

    Цитата:
     
        .386
        .model flat,stdcall
        option casemap:none
     
        include \masm32\include\windows.inc
     
        include \masm32\include\user32.inc
        include \masm32\include\shell32.inc
        include \masm32\include\kernel32.inc
        include \masm32\include\urlmon.inc
     
        includelib \masm32\lib\urlmon.lib
        includelib \masm32\lib\user32.lib
        includelib \masm32\lib\kernel32.lib
        includelib \masm32\lib\shell32.lib
     
    .data
        msgOk        db "Готово  ",0
        msgErr        db "Ошибка  ",0
        mcap        db "Downloader",0
        fileUrl        db "http://bomz-co.narod.ru/ENHANCER.zip",0
        fileSave    db "ENHANCER.zip",0
     
    .code
    start:
        invoke URLDownloadToFile, 0, addr fileUrl, addr fileSave, 0, 0
    .if eax == S_OK
        invoke MessageBox, NULL, addr msgOk , addr mcap, MB_OK + MB_ICONASTERISK
    .else
        invoke MessageBox, NULL, addr msgErr, addr mcap, MB_OK + MB_ICONASTERISK
    .endif
        invoke    ExitProcess,eax
    end start
     

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:56 25-11-2011 | Исправлено: bomzzz, 04:36 26-11-2011
    kenny5705



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    за wininet спасибо, нашел тут полезную инфу на rsdn.ru, хотя и она не понадобилась, использовал wget
    другое не понадобилось на си и масме программировать не умею
     
    в итоге получил желанные старницы...  
    теперь нужно отсортировать информацию из них... выделить нужное / убрать ненужное...
    а для начала как прочитать и записать данные из одного в другой файл на с++?

    Всего записей: 468 | Зарегистр. 15-01-2009 | Отправлено: 15:25 26-11-2011
    bomzzz



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну просто открыть файл да читать. я не знаю синтаксиса на Си подожди кто нибудь напишет. или так же как ты нашел все про вининет погугли "C работа с фалами" типа такого
     
    Добавлено:
    на всех языках одинаково, на си наверняка так же - открываешь файл, получаешь ассоциированный с ним хендл, а потом читаешь по порядку от начала, смещаешь указатель в нужную сторону в случае необходимости - такая идея
     
    Добавлено:
    winapi то везде одинаковые. вот кусок кода на масме - открывается файл, определяется его размер, резервируется блок памяти (для скорости) и весь файл считывается туда, а потом уже работает в памятью, что быстрее. смотри какие вип апи используются

    Цитата:
     
        invoke OpenFile, ebx, addr FSTRUC, OF_READ
        .IF eax==-1                ; HFILE_ERROR=-1
        jmp NOSID
        .ENDIF
     
        mov Handle_Mess, eax
        invoke GetFileSize,Handle_Mess,addr HighOrderWord    ; получим размер файла для чтения, сохраним старшее слово размера
        mov LowOrderWord, eax                ; сохраним младшее слово размера
     
        invoke LocalAlloc,LMEM_FIXED OR LMEM_ZEROINIT,LowOrderWord        ; зарезервируем блок памяти
        mov  hMemory,eax
        invoke ReadFile,Handle_Mess,hMemory,LowOrderWord,addr bytesRead,NULL
        invoke CloseHandle, Handle_Mess
     

     
    Добавлено:
    более навороченная функция что файл открывать. но суть одна

    Цитата:
     
        invoke CreateFile,File_Read,GENERIC_READ,0,0,OPEN_EXISTING,\
        FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_NO_BUFFERING OR FILE_FLAG_SEQUENTIAL_SCAN,0    ; открываем файл для чтения
     

     
    Добавлено:
    могу добавить - интернет штука ненадежная он может затупить, зависнуть, упасть - так что все запросы даже ассинхронные лучше отдельным тредом оформлять

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:40 26-11-2011
    kenny5705



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    да лан не парься ты так сам как нибудь найду...
    точнее уже нашел
     
    теперь ищу консольный преобразователь формул TeX'а в формулы но уже для отображения на экране

    Всего записей: 468 | Зарегистр. 15-01-2009 | Отправлено: 16:43 26-11-2011 | Исправлено: kenny5705, 17:51 26-11-2011
    blaro



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Привет всем.
    Есть такая задача: дана серия чисел. Первое число х1=1. Каждый следующие элемент расчитывается по формуле xn+1=0.5*(xi+a/xi)
    a - число которое вводится с клавиатуры.
    Далее, программа должна вывести на экран значение i и xi, если |a-xi2|<epsilon.
    epsilon - также вводится с клавиатуры. Он должен быть положительным и не меньше 10-6.
    Я написал код и при прогоне программа выдает x3=2.454 (если а=6, epsilon=0.000001), хотя по идее программа должна совершить еще пару итераций, потому что |6-2.4542|<epsilon. Ниже код который я написал. Помогите разобраться где проблема. Спасибо.
    #include <stdio.h>
    #include<math.h>
     
    int main()
    {
        int i=1;
        float xi=1.0,a,epsilon,tmp;
        printf("Enter \"a\" value\n");
        scanf("%f",&a);
        printf("Enter an epsilon value\n");
        scanf("%f",&epsilon);
        tmp=abs(a-pow(xi,2));
        while(abs(a-pow(xi,2))>=epsilon)
        {
            i++;
            xi=0.5*(xi+a/xi);
        }
        printf("x%d=%f\n",i,xi);
        return 0;
    }

    ----------
    Оптимистично смотрю на мир глазами убийцы.

    Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 22:33 26-11-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    blaro
    замени все abs() на fabs() и будет тебе счастье...

    Всего записей: 24104 | Зарегистр. 06-12-2002 | Отправлено: 22:50 26-11-2011
    blaro



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    akaGM
    Спасибо.
    Еще скажите, у меня в условиях использовать переменные типа double. Когда я ввожу с клавиатуры или вывожу на экран я должен писать %lf, правильно?

    ----------
    Оптимистично смотрю на мир глазами убийцы.

    Всего записей: 311 | Зарегистр. 29-01-2006 | Отправлено: 23:56 26-11-2011
    akaGM

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

    Цитата:
    у меня в условиях использовать переменные типа double
    правильное условие...
     
    %lf
     
    l == long
    достаточно %e или %g или %f
     
    почитай о форматах i/o...

    Всего записей: 24104 | Зарегистр. 06-12-2002 | Отправлено: 00:02 27-11-2011
    Abs62



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

    Цитата:
    %lf  
     
    l == long  
    достаточно %e или %g или %f  

    Для ввода недостаточно. Функция scanf требует чёткого соблюдения типа параметра. %e, %g, %f вводят float, переменную double ей с такими полями ввода подсовывать нельзя. Для ввода в double обязательно надо %le, %lg, %lf.

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

    Всего записей: 6079 | Зарегистр. 22-10-2005 | Отправлено: 01:37 27-11-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    да?
    всегда был в полной уверенности, что для double достаточно
    %f, а %lf -- для long double
    не поленюсь, освежу format specification...
     
    да...
    для scanf() надо, для printf() вроде нет...

    Всего записей: 24104 | Зарегистр. 06-12-2002 | Отправлено: 01:48 27-11-2011 | Исправлено: akaGM, 02:15 27-11-2011
    bomzzz



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    никто случайно не знает, почему когда из буфера обмена вставляешь новое имя файла (переименовываешь файл) приходит сообщение какабудта в буфер было что то скопировано.
     
    WM_DRAWCLIPBOARD
     
       
     
    ну или можно его как то отличить от обычно изменения содержимого буфера?
     
    Добавлено:
    http://vsokovikov.narod.ru/New_MSDN_API/Clipboard/notify_wm_drawclipboard.htm

    Цитата:
    Параметры
    wParam
    Не используется; должно быть нуль.
    lParam
    Не используется; должно быть нуль.

    lParam действительно ноль всегда, а вот wParam не фига не нуль, но всегда разное число, видимо как то с смещением в памяти связан. зависимости не вижу в его изменении, чтоб различить эти ситуации
     
    Добавлено:
    всосал что происходит - перед тем как "вставить" в поле изменения имени файла, система перезаписывает буфер обмена, чтоб исключить из него недопустимые символы в именах (причем символы бывают двух степеней несовместимости, несовместимые абсолютно и недопустимые виндой) возможно была дыра и так ее заткнули. поэтому чтоб это дело обойти надо отлавливать это меню системное экплорера.
     
    то есть если поместить в буфер обмена например 1///////////////, потом попробовать это вставить в имя файла у вас в буфере останется 1

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 04:14 27-11-2011
    asi81



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Никто не подскажет? Есть ли для стандартных потоков ввода вывода модификатор, заполняющий пустые места нулями, а не пробелами.
     
    Тоесть есть следущее:
     
    cout << setw(2) << 5 << setw(2) << 2;
    Получаем
     5 2
    А хотелось бы получать  
    0502
     
     
    Добавлено:
    akaGM
    Я конечно не берусь никого учить, но если использовать плюсы, а не Си, то лучше использовать std::cout и strstream вместо scanf() и sscanf(). На своем опыте знаю сколько ошибок типа "бой по памяти" сидят в этих 2х функциях.

    Всего записей: 86 | Зарегистр. 08-06-2009 | Отправлено: 11:30 28-11-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asi81
    ну так и скажи об этом автору кода, а не мне, он их там использует, я-то тут причём?
    кстати, твоя же проблема printf-ом решается с полтыка...
    а так юзай setfill() :
     
      cout << setfill('0');
      cout << setw(2) << 5 << setw(2) << 2;

    Всего записей: 24104 | Зарегистр. 06-12-2002 | Отправлено: 12:53 28-11-2011 | Исправлено: akaGM, 13:26 28-11-2011
    bomzzz



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    люди киньте идею как сделать. я хочу передавать данные командным параметром УЖЕ ЗАПУЩЕННОЙ ПРОГРАММЕ. то есть запускается вторая копия приложения, оно определяет, что одна его копия уже запущена - не запускается, но если ему передан командный параметр оно посылает запущенному экземпляру некое сообщение, где в одном из параметров смещение на переданные данные. вот как это сделать - выделить память в контексте первого процесса и записать данные туда, или как то можно проще сделать?

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:59 28-11-2011
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Почитай Рихтера про memory-mapped files.

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

    Всего записей: 6079 | Зарегистр. 22-10-2005 | Отправлено: 20:23 28-11-2011
    bomzzz



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сенкс
     
    Добавлено:
    .NET framework 4.0 не особо, но я еще ниче не прочитал

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:29 28-11-2011
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 05:10 29-11-2011 | Исправлено: bomzzz, 05:22 29-11-2011
    Открыть новую тему     Написать ответ в эту тему

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